async.js:async.eachSeries结果总是抛出undefined

时间:2015-12-02 08:21:38

标签: javascript async.js

我的代码有问题吗?我使用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

2 个答案:

答案 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);
});

这应该有用,虽然我现在还不能自己测试。