关于javascript:循环串行-Promise

业务开发中,其实常常会遇到须要串行 Promise 的场景,如果应用一般的 for 循环写法,是无奈实现冀望的成果的,解决办法就是将 Promise 以链式组装起来,代码如下:

function waitFor(time) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve();
    }, time);
  });
}

function createPromise(chain, idx) {
  return chain
    .then(() => waitFor(5000))
    .then(() => {
      console.log('-----', idx);
      return Promise.resolve(idx);
    });
}

function forPromise() {
  let currentPromise = Promise.resolve({});
  for (let i = 0; i < 10; i++) {
    currentPromise = createPromise(currentPromise, i);
  }
  return currentPromise;
}

forPromise();

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理