在这里,尝试这段代码,
const async = require('async');
const request = require('request');
function httpGet(url, callback) {
const options = {
url : url,
json : true
};
request(options,
function(err, res, body) {
callback(err, body);
}
);
}
const urls= [
"http://localhost:3010/alm/build_tool",
"http://localhost:3010/alm/development_tool",
"http://localhost:3010/alm/project_architecture"
];
async.map(urls, httpGet, function (err, res){
if (err) return console.log(err);
console.log(res);
});
解释 :这段代码使用async https://www.npmjs.com/package/async and request https://www.npmjs.com/package/request节点包。async.map
根据定义,需要 3 个参数,第一个是数组,第二个是要对该数组的每个元素调用的迭代器函数,以及回调函数,在 async.map 完成处理时调用。
map(arr, iterator, [callback])
通过将 arr 中的每个值映射到
迭代器函数。使用 arr 中的项目调用迭代器
以及处理完成时的回调。这些中的每一个
回调需要 2 个参数:一个错误,以及来自的转换后的项目
编曲如果迭代器将错误传递给其回调,则主回调
(对于地图函数)立即调用并出现错误。
注意:对迭代器函数的所有调用都是并行的。
在你的 httpGet 函数中,你正在调用request
传递 url 的函数,并明确告知响应格式为json
. request
,处理完成后,使用三个参数调用回调函数,err - 如果有,res - 服务器响应,body - 响应正文。
如果没有err
from request
, async.map
将这些回调的结果收集为数组,并将该数组最后传递给其第三个回调函数。否则,如果 (err) 为 true,则async.map
函数停止执行并调用其回调err
.