试试这个,应该工作。您可能想要尝试使用mapLimit来限制并行请求或mapSeries的顺序执行。
var async = require('async');
var request = require('request');
async.map(['url1', 'url2'], function(item, callback){
request(item, function (error, response, body) {
callback(error, body);
});
}, function(err, results){
console.log(results);
});
你的例子我需要看看你的get_options函数。它是同步的吗?如果是的话,你可以做到这一点
var async = require('async');
var request = require('request');
var options;
async.map([item1, item2], function(item, callback){
options = get_options(item);
request(options, function (error, response, body) {
callback(error, body);
});
}, function(err, results){
console.log(results);
});
如果您get_options是异步的,接受回调做以下操作:
var async = require('async');
var request = require('request');
async.map([item1, item2], function(item, callback){
get_options(item, function(err, option){
if(err) {
callback(err);
}
else{
request(options, function (error, response, body) {
callback(error, body);
});
}
});
}, function(err, results){
console.log(results);
});
您可能想要使用异步库。 – Yalamber
您如何看待韩国的问题? –
@askkirati,正如我在我的问题中提到的,我知道异步模块,但我不明白如何以并行方式创建请求并将结果获取到数组中。如果您知道如何做到这一点,请将其添加为答案。 – tldr