Node.js请求 - 处理多个POST请求

时间:2017-09-01 07:53:38

标签: javascript node.js

我使用请求库通过API与其他服务器通信。但是现在我需要同时发送多个(10个或更多)POST请求,并且只有在所有响应都正确的情况下才能进一步移动。通常语法看起来有点像这样:

var options = {
url: "",
method: "POST",
header: {...},
body: {...}
};

request(options, function(err,response,body)
{
}

但是现在我有一个对象数组而不是一个选项变量。有没有办法做到这一点?或者也许还有另一个能够解决问题的图书馆。

编辑:

var arrayOfIds = [];
const requests = [];
for(var i in range){
   var options = {} // here goes all bodies and headers to send
   requests.push( // push a request to array dynamically 
    request(options, function(err,response,body){
     if(!err && response.statusCode == 201){
      arrayOfIds.push(body.id);
     }
   }));

Promise.all(requests)
.then(function(res){
    console.log(arrayOfIds); // this is empty
});

1 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题:

  • 异步库,方法并行
  • Promise.all

要将您的请求转换为承诺,请使用request模块 - request-promise。在代码中它将如下所示:

const request = require('request-promise');

// Note, you don't assign callback here
const promises = [
  request.post({...}),
  request.post({...}),
  request.post({...})
];

// And then you simply do Promise.all
Promise.all(promises).then(console.log);