异步/顺序承诺,检测结束
Async / Sequentials promises, detect the end
我有一组 promises ( Q ) 函数:
var tasks = [p, p, p, p, ...];
我希望能够异步或同步执行它们,并检测所有承诺何时已执行。我能够让它同步工作:
1) 同步
tasks.reduce(function(prev,cur){
return prev.then(cur);
}, Q.resolve()).then(function() {
console.log("finished")
});
2) 异步
var result = Q();
tasks.forEach(function (f) {
return result.then(f);
});
但是,如何在异步工作时检测到所有承诺何时都已执行?
任何帮助将不胜感激。
示例取自Q doc
您不想使用 forEach
,而是 map
从您的函数数组中获取一组承诺。有了它,您可以使用 Q.all
获得所有结果的承诺(当所有承诺都已解决时):
Q.all(tasks.map(function(f) {
return f();
})).then(function() {
console.log("finished")
});
我有一组 promises ( Q ) 函数:
var tasks = [p, p, p, p, ...];
我希望能够异步或同步执行它们,并检测所有承诺何时已执行。我能够让它同步工作:
1) 同步
tasks.reduce(function(prev,cur){
return prev.then(cur);
}, Q.resolve()).then(function() {
console.log("finished")
});
2) 异步
var result = Q();
tasks.forEach(function (f) {
return result.then(f);
});
但是,如何在异步工作时检测到所有承诺何时都已执行? 任何帮助将不胜感激。
示例取自Q doc
您不想使用 forEach
,而是 map
从您的函数数组中获取一组承诺。有了它,您可以使用 Q.all
获得所有结果的承诺(当所有承诺都已解决时):
Q.all(tasks.map(function(f) {
return f();
})).then(function() {
console.log("finished")
});