异步回调返回数组代替对象

async callback returning array in place of object

我正在使用异步节点库来处理一些数据。它的行为有线,有时它返回 array,其中 2 个元素首先作为 undefined,而其他时候作为具有结果的一个元素返回。这是示例代码

let async =  require('async');
class Foo {
    getFoo(req, callback) {
        let self = this;
        async.waterfall( [
            self._foo.bind(self, req),
            self._bar.bind(self),
            self._foobar.bind(self)
        ] , (err, result)=> {
            if (err) return callback(err);
            console.log(result);
            return callback(null, result);
        }); 
     } 
}

我在另一个文件中使用上面的 class 让 Foo = require('foo');

let req = {};
let seriesProcessArr = [];
let foo =  new Foo();
seriesProcessArr.push(foo.getFoo.bind(foo,req));
async.series( seriesProcessArr , (err, result) => {
           if(err) {
                console.log(err);
            }
            console.log(result);
});

首先 result 应该有一个对象,代替我得到的是一个数组。其次,有时第一个元素是 undefined

result 是一个数组,因为您正在使用 async.series,它收集结果。

礼貌:@Bergi(请阅读评论)