如何异步方式调用10个函数并收集所有结果并知道什么时候完成?

时间:2014-01-27 22:20:40

标签: javascript node.js deferred

我正在使用Node.js的延迟模块,我创建了从远程服务器获取数据的延迟函数。我需要从不同的远程服务器获取10个文件,如何做到这一点,承诺知道什么时候完成并获取所有然后结果数组? 目前我已经关闭,只有当我完成之前的操作时我才会获取下一个文件,但它是同步且缓慢的。

1 个答案:

答案 0 :(得分:1)

根据我所假设的the documentation你正在使用的模块,你可以这样做:

deferred(delayedAdd(2, 3), delayedAdd(3, 5), delayedAdd(1, 7))(function (result) {`
    console.log(result); // [5, 8, 8]`
});

E.g:

deferred(promise1, promise2, promise3)(function (result) {
    // `result` is an array of the results
});

在上面的链接中,搜索“分组承诺”(虽然它没有比上面更多的内容)。

如果您有一系列承诺,可以使用Function#apply执行上述操作:

deferred.apply(undefined, theArray)(function (result) {
    // `result` is an array of the results
});