【发布时间】:2019-11-22 20:29:04
【问题描述】:
想知道 - 同步多个 setTimeout 调用的方法是什么。基本上这段代码应该打印 A、B 和 C(顺序无关紧要),但重要的是 Done 应该最后打印。
function printAsync(s) {
return new Promise( function(resolve){
setTimeout(function() {
console.log(s);
resolve();
}, Math.floor((Math.random()*1000)+500));
})
}
function inparallel(parallel_functions, final_function) {
let p = Promise.resolve()
.then(() => {
const promises = [];
for( i = 0 ; i < parallel_functions.length ; i++) {
promises.push(parallel_functions[i]);
}
return Promise.all(promises);
}).then(() => {
final_function();
});
}
A=function(){printAsync("A");}
B=function(){printAsync("B");}
C=function(){printAsync("C");}
D=function(){printAsync("Done");}
inparallel([A,B,C],D)
【问题讨论】:
-
Promise.all()似乎就是您所需要的一切。
标签: javascript node.js promise settimeout