2016-03-23 62 views
-1

我打從我的應用程序的NodeJS一些URL,URL - >拍攝時間 爲url1 - > 3秒 URL2 - > 4秒 URL3 - > 2秒異步調用使用的NodeJS

和我使用承諾將結果保存在一個名爲global的公共變量中。如果我正在同步進行,則需要9秒(4 + 3 + 2)。

有沒有一種方法可以將所有三個變量的輸出異步保存在一個變量中,這樣我只需等待4秒[所有URL時間的最大值]。

目前,我的方法是不等待其他人完成並返回空,如果我嘗試異步。

+0

你用什麼來打電話?任何承諾? – Wainage

+0

如果我正在嘗試承諾,它需要很長時間,我已經直接將其放入循環中。 – Akash

+0

然後哪個函數/包? – Wainage

回答

1

瞭解Bluebird

然後用這個

var request = require('request-promise'); 
var Promise = require('bluebird'); 

var urls = ["http://", "http://",...]; 


Promise.map(urls, function(url){ // executes concurrently 
    return request(url) 
}).then(function(resultsArray){ 
    // resultsArray = array of all results 
}); 

祝你好運!

+0

謝謝Wainage。我會試試這個。 :) – Akash