我想用一个值数组循环执行一个函数。每次执行都必须等待之前完成。 下面的示例代码应该打印:
Done: 1
Done: 2
Done: 3
Done: 4
Done: 5
谢谢!
第
'use strict';
function f1(value) {
return new Promise((resolve, reject) => {
setTimeout(function() {
console.log('Done: ' + value);
resolve(true)
}, Math.random() * 2000 + 1000);
});
}
const vs = [0,1,2,3,4,5];
vs.reduce((start, next) => {
return f1(next)
})
答案 0 :(得分:2)
如果你只想要ES6,试试这个:
'use strict';
function f1(value) {
return new Promise((resolve, reject) => {
setTimeout(function() {
console.log('Done: ' + value);
resolve(true)
}, Math.random() * 2000 + 1000);
});
}
const vs = [0,1,2,3,4,5];
let promiseChain = vs.reduce((start, next) => {
return start.then(() => f1(next));
}, Promise.resolve());
promiseChain.then(() => console.log('Done!'));
如果您有兴趣从分辨率中获取值,您也可以尝试this。