众所周知,map可以把一个数组中的项每个变量遍历一遍,执行同一个异步操作,然后将结果存到最后的回调函数中。 例如: async.map([‘file1’,’file2’,’file3’], fs.stat, function(err, results){ // results就是最终返回的数据 }); 但是我现在遇到这样一个问题,我得到了一个数组,但是数组里面的数据有些是我错误的,所以我调用了一个方法getExistAdLocPage。在方法getExistAdLocPage中,我使用了map来对数组中的每一项进行分析(例如:数组中的数据是url,我用request来分析是否真的存在这些url,判断他们是不是404),然后给数组中的数据添加了一个状态,若是存在,stat=true, 否则就stat=false. 代码如下:
var getExistAdLocPage = function(data, callback){
async.map(data,function(item,callback) {
var name = item['name'];
var result = item['url'];
if(result.indexOf("502 Bad Gateway") > -1) {
callback(null,{"stat":"webfail","name":name});
} else if(result.indexOf("404-1") > -1) {
callback(null,{"stat":"page not exist","name":name});
} else if(result.indexOf("404 Not Found") > - 1) {
callback(null,{"stat":"page not exist","name":name});
} else if(result.indexOf("<!DOCTYPE") > - 1){
callback(null,{"stat":"page not exist","name":name});
} else if(result.indexOf("403 Forbidden") > - 1){
callback(null,{"stat":"page not exist","name":name});
} else {
callback(null,{"stat":"success","name":name,"data":result});
}
},function(err,result) {
console.log(result);
});
}
我的问题是如何把result中的数据传给我的调用函数。是在async.map外面包一层callback吗?怎么包?谢谢大家