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 – 由于异步生成器中的非并行等待承诺而导致速度下降


下一篇:javascript – 如何使用Promise.all避免promise构造函数反模式