javascript – 如何使用Node中的Promises一次执行并行异步多个请求
作者:互联网
数组和循环,但我希望能够并行运行所有这些,因为我不想一个接一个地运行.
我基本上希望将所有端点调用状态代码,正文和时间存储为数组,并将它们作为结果返回,而不管端点中是否存在错误.
我正在使用Bluebird,我如何使用它的功能来解决这个问题?
解决方法:
您可以将Promise.map与.bind一起使用:
function getComponentStatuses(componentsToCheck) {
return Promise.map(componentsToCheck, function() {
var start = Date.now();
return getAsync({
url: component.endpoint,
timeout: component.timeout
})
.bind({
name: component.name,
status: null,
body: null,
time: null
})
.spread(function(response, body){
Logger.info('GET took ' + end + 'ms.');
this.status = response.statusCode;
this.body = body;
return this;
})
.catch(function(e) { return this; })
.finally(function() { this.time = Date.now() - start; })
});
}
请注意,您的计时方法不正确,因为http代理可能会限制请求.
标签:javascript,node-js,promise,bluebird,restify 来源: https://codeday.me/bug/20190725/1528797.html