node.js - 使用相同的回调函数异步多个请求

标签 node.js mongodb node-async node-request

 var parsedUrl = req.body.parsedUrl;
  console.log(parsedUrl);
  var options = {
      url: 'https://api.github.com/repos/' + parsedUrl,
      headers: {
          'User-Agent': 'request'
      }
  };

   var options2 = {
       url: 'https://api.github.com/repos/' + parsedUrl + '/readme',
       headers: {
           'User-Agent': 'request'
       }
   };

 function callback(error, response, body) {
      if (!error && response.statusCode == 200) {
          var info = JSON.parse(body);
          Thing.create(info, function(err, thing) {
            //console.log(info);
            if(err) { return handleError(res, err); }
            return res.json(201, thing);
          });

      } else {
        console.log('github request error');
      }

  }
  request(options, callback);
  request(options2, callback);

基本上,我需要提出两个请求,所以我的问题如下: 1.我如何使用 async 模块异步发出这两个请求。我尝试使用 async.parallel 但该语法与请求的语法不能很好地配合,因为 async.parallel 需要回调。

2.如何合并结果?我需要将它们同时保存到数据库中的Mongo中的同一个对象中。

我希望这是有道理的。 谢谢,

最佳答案

您可以使用async库:

npm install async --save

使用 optionsoptions2 创建一个数组,并对数组中的每个项目调用 request:

async.map([options, options2], request, function(err, results) {
  // results[0] is the response for options
  // results[1] is the response for options2
  // you can merge them here and insert into mongodb as one document
});

关于node.js - 使用相同的回调函数异步多个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26602159/

相关文章:

node.js - 是否有适用于 Node.js 的 Google API 库?

sql - 是否可以使用 SSIS 将数据加载到 MongoDB?

node.js - Mongoose 预保存 Hook 正在触发,但未保存其他字段(不使用 model.update)

javascript - async.waterfall 仅返回函数数组的 array[0] 索引处的函数结果集 - Node js

node.js - s3.getObject()。promise()从不返回任何内容

node.js - 将 NPM 依赖项安装到不包含 package.json 的文件夹中

node.js - sequelize.js 创建 db 表时,表行有没有限制?

mongodb - mongorestore 使用 -drop 选项删除集合

javascript - Node.JS async.parallel 不会等到所有任务都完成