使用async js llin进行异步并行调用

时间:2016-09-17 23:10:15

标签: javascript node.js amazon-s3 async.js

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秒吗?

感谢

1 个答案:

答案 0 :(得分:0)

不完全。您可以同时打开多少个连接是有限制的。例如,网络浏览器place a limit on this, each browser having a different limit.

通常,只需少量任务,您就不会达到此限制并感知到。但是有1000个任务试图从AWS获取你可能不会有1-2s执行时间。

还要考虑尝试同时下载1000张图像的带宽限制,服务器的互联网连接在1-2秒内下载所需的速度有多快?

有关详细信息,请参阅this stackoverflow discussion