Promise方法串行执行, 让Promise一个接一个进行
本人在实际工作中遇到需要一个接一个导出数据
的场景,在此记录以下方法
控制台运行下面代码可以看到效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| function waitPromise(i) { console.log(222, i) return new Promise((resolve, reject) => { setTimeout(() => { resolve('resolved'); }, 1000); }); }
var ps = []; for (let i = 0; i < 9; i++) { ps.push(() => waitPromise(i + 1 * 1000)); } var p = Promise.resolve();
ps.reduce((p, c) => { return p.then(c) }, p).then(() => { console.log('all finished'); }).catch(reject => { console.log('reject', reject) });
|
知识点:
Reduce
Promise