2016-09-17 57 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