我的代码有问题吗?我使用async.eachSeries
但我的结果总是未定义。
这是我的代码:
async.eachSeries([1,2,3], function(data, cb) {
setTimeout(function() {
cb(null, data+1);
}, 1000);
}, function(err, result) {
console.log(err, result);
});
我的日志已退回:null
,未定义而不是null
,[2,3,4]
谢谢...对不起我可怕的英语XD
答案 0 :(得分:2)
当迭代完成时调用第二个参数,并且使用eachSeries()
时,它只需要一个参数err
。如果您需要result
,则必须使用mapSeries
:
async.mapSeries([1, 2, 3],
function (data, cb) {
setTimeout(function () {
cb(null, data + 1);
}, 1000);
},
function (err, result) {
console.log(result);
}
);
答案 1 :(得分:1)
您也可以在eachSeries()中使用结果形式:
var result = [];
async.eachSeries([1,2,3], function(data, cb) {
setTimeout(function() {
result.push(data+1);
cb(null);
}, 1000);
}, function(err) {
console.log(err, result);
});
这应该有用,虽然我现在还不能自己测试。