2016-09-17 65 views
0

arrayOfFunctions是一个包含1000多个函数的数组。每个函数都会对AWS S3进行异步调用以获取对象的元数据。使用异步js的异步并行调用llin

功能:

function (cb) {$.when(getMetadata("bucketname","objectkey")) 
        .done(function (data) { 
         cb(null, data) 
        }); 

对于单个功能,它需要小于第二读取元数据,如果我被一个,将带每功能1秒执行它们的1000之一。

如何我呼吁与async.parallel:

async.parallel(arrayOfFunctions, function (err, result) { 
      console.log(result); 
     } 
    }); 

如果我使用async.parallel,岂不是所有的功能都在一次和并行地执行?我应该一次得到所有结果吗?只需1-2秒?

谢谢

回答

0

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

通常,使用一小部分任务,您不会达到此限制并感知。但有1000个任务尝试从AWS获取您可能不会有1-2s的执行时间,你期待。

还要考虑试图同时下载1000张图片的带宽限制,您的服务器的互联网连接将不得不在1-2秒内全部下载?

详情请参阅this stackoverflow discussion