2016-03-23 57 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