async.mapSeries使用
在处理数据时,使用for
循环进行遍历处理数据,但是发现跳出callback时,所有数据为空,数据处理起来特别麻烦,如:
getBugData4WReport(function (data,err) {
console.log(data);
for(var i = 0;i<data.length; i++){
getDeveloperBugData(data[i].project,data[i].name,function (data) {
dataResult.push(data);
console.log("dataResult",dataResult)
});
callback(data); //1
}
callback(data); //2
})
若在2处调用时,data值为undefined
下面为异步调用,async.mapSeries
getBugData4WReport(function (data,err) {
async.mapSeries(data, (item, done) => {
console.log(item);
getDeveloperBugData(item.project,item.name,function (data1) {
console.log(data1);
done(null, data1);
});
}, (err, data2) => {
console.log(data2);
})
})
data
为getBugData4WReport
函数回调要处理的数据,若使用for循环等处理数据,在循环为无法继承处理该数据
done
为 函数处理的数据,将处理好的数组数据传给data2
多个回调函数的值
async.series({
one: function(callback){
callback(null, 1);
},
two: function(callback){
callback(null, 2);
}
},function(err, results) {
console.log(results);
});