Skip to content

使用Promise实现每隔1秒输出1,2,3

Posted on:2024年7月20日 at 11:58

这道题比较简单的一种做法是可以用Promise配合着reduce不停的在promise后面叠加.then,请看下面的代码:

const arr = [1, 2, 3];
arr.reduce((p, x) => {
  return p.then(() => {
    return new Promise((r) => {
      setTimeout(() => r(console.log(x)), 1000);
    });
  });
}, Promise.resolve());

还可以更简单一点写:

const arr = [1, 2, 3];
arr.reduce(
  (p, x) =>
    p.then(() => new Promise((r) => setTimeout(() => r(console.log(x)), 1000))),
  Promise.resolve(),
);
原文转自:https://fe.ecool.fun/topic/bff513af-f95f-481f-8bda-03f3515d0e08