处理来自node.js应用程序的多个https请求

我一直在寻找这样的帮助,而且我一直在圈子里走了一段时间,但我卡住了

我使用node.js https进行多个ReST POSTS,我需要能够跟踪每个请求的响应,然后汇总结果。 我每次执行的请求数量都不相同。

我创build了一个函数,为每个http请求返回一个Promise。

function httpRequest(params, postData) { return new Promise(function(resolve, reject) { var reqActivity = http.request(options, function(res) { if (res.statusCode < 200 || res.statusCode >= 300) { return reject(new Error('statusCode=' + res.statusCode + ' statusMessage=' + res.statusMessage)); } var chunks = []; res.on("data", function(chunk) { console.log("Blowing chunks..."); chunks.push(chunk); }); res.on("end", function() { console.log('At the end'); var body = Buffer.concat(chunks); var response = JSON.parse(body); var errorMessage; if (//checking for some specific messages in the response) { errorMessage = "stuff that went wrong"; reject(errorMessage); } resolve(body); }); res.on("error", function(error) { console.log("in error"); reject(error); }); reqActivity.write(postData); reqActivity.end(); }); }); }; 

然后我需要多次调用这个函数,并处理返回的promise,但是如果我这样做,我不明白我可以如何处理多个return

 httpRequest(options, JSON.stringify(bulkUpdateObj)).then(function(output) { console.log(output); // Do stuff }); 

这让我觉得我需要build立一系列的承诺。 会是这样吗?

 var promises = []; promises.push(httpRequest(options, JSON.stringify(bulkUpdateObj))); 

如果是这样,我该如何使用Promise.all来检查东西? 或者这的确是正确的方法呢?

任何帮助,非常感谢,一如既往!

更新所以我已经实现Promise.all中的Promise数组如下所示:

 Promise .all(promises) .then(values => { console.log("Inside of Promise.all - promise length: " + promises.length); console.log("Values: " + values); }) .catch(reason => { console.log("Inside of error of Promise.all - promise length: " + promises.length); console.log("Reason: " + reason); }); 

但我不断得到的消息:(节点:61289)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:14):

对我来说,看起来我正在处理拒绝,这可能是什么原因造成的?

这一切看起来很接近。 Promise.all()应该能够处理其余的。

一旦将一系列承诺推入promises您可以:

 Promise.all(promises) .then(result => { //result will be an array of values returned from your requests } .catch(err => { // whoops. } 

唯一的问题是,如果你的一个请求拒绝,它会立即停止一切,拒绝整个事情。 也许这就是你想要的,但是如果不是的话,你可能更喜欢解决某种错误,然后最终在结果数组中出现