How to do parallel async multiple requests at once with Promises in Node

后端 未结 4 751
Happy的楠姐
Happy的楠姐 2021-01-13 15:44

Array and loops through but I want to be able to run all of them in parallel instead as I don\'t want to run one after another.

I basically want to store all endpoin

4条回答
  •  天涯浪人
    2021-01-13 15:51

    You can use Promise.map with .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; })
        });
    }
    

    Note that your timing method is incorrect because the http agent might throttle requests.

自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题