arrayOfFunctions是一个包含1000多个函数的数组。每个函数都对AWS S3进行异步调用以获取对象的元数据。
功能:
function (cb) {$.when(getMetadata("bucketname","objectkey"))
.done(function (data) {
cb(null, data)
});
对于单个函数,读取元数据需要不到一秒的时间,如果我逐个执行1000个,每个函数需要1秒。
我如何使用async.parallel调用:
async.parallel(arrayOfFunctions, function (err, result) {
console.log(result);
}
});
如果我使用async.parallel,是否意味着所有函数一次性并行执行?我应该立刻得到所有这些结果,只需1-2秒吗?
感谢
答案 0 :(得分:0)
不完全。您可以同时打开多少个连接是有限制的。例如,网络浏览器place a limit on this, each browser having a different limit.
通常,只需少量任务,您就不会达到此限制并感知到。但是有1000个任务试图从AWS获取你可能不会有1-2s执行时间。
还要考虑尝试同时下载1000张图像的带宽限制,服务器的互联网连接在1-2秒内下载所需的速度有多快?
有关详细信息,请参阅this stackoverflow discussion