2020-01-09
描述
将一个数组中的 Promises 按顺序进行运行。
提示
- 使用
Array.prototype.reduce()
创建一个 Promise 链 - 当成功调用后,每一次的 promise 都返回下一次的 promise
代码
const runPromisesInSeries = ps => ps.reduce((p, next) => p.then(next), Promise.resolve());
示例
按顺序打印出延迟的时间:
const delay = d => new Promise(r => setTimeout(() => {
r(d);
console.log(`delay ${d}`);
}, d));
runPromisesInSeries([() => delay(1000), () => delay(2000)]); // 1s 后输出 delay 1000,3s 后输出 delay 2000