async.js : async.eachSeries 结果总是抛出 undefined
async.js : async.eachSeries result always throw undefined
我的代码有问题吗?我使用 async.eachSeries
但我的结果总是抛出 undefined。
这是我的代码:
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
第二个参数在迭代完成时调用,对于 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);
}
);
您也可以使用 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);
});
虽然我现在无法亲自测试,但应该可以。
我的代码有问题吗?我使用 async.eachSeries
但我的结果总是抛出 undefined。
这是我的代码:
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
第二个参数在迭代完成时调用,对于 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);
}
);
您也可以使用 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);
});
虽然我现在无法亲自测试,但应该可以。