aysnc.forEachSeries 仅在元素值传递给回调时迭代第一个元素

aysnc.forEachSeries only iterates on first element if element value is passed into callback

以下代码尝试使用 forEachSeries 迭代数组 "a,s,d,f".split(',')通过回调在每次迭代中打印元素 ,但 打印的唯一值是第一个元素 即 a.它省略了打印 s、d 和 f。 如何打印所有元素?

var async = require('async');
async.forEachSeries(
    "a,s,d,f".split(','),
    function (el,cb) {
        console.log(el);
        cb(el); //<-----------    NOTE: VALUE IS PASSED IN HERE - "STOPS AT FIRST ITERATION"                  
    },
    function (el) {
        console.log(el)
    }
);
console.log('x');

输出如下:

a
a
x

但是如果将代码编辑为不在回调中传递值的代码,则会打印所有值以及一个额外的 null

以下是代码和输出

var async = require('async');
async.forEachSeries(
    "a,s,d,f".split(','),
    function (el,cb) {
        console.log(el);
        cb(); //<-----------    NOTE: NO VALUE IS PASSED IN HERE - "WORKS FINE"         
    },
    function (el) {
        console.log(el)
    }
);

console.log('x');

输出:

a
s
d
f
null
x

好吧,这超出了我对回调功能的理解,第一个参数显然被视为错误。以下编辑作品:

var async = require('async');
async.forEachSeries(
    "a,s,d,f".split(','),
    function (el,cb) {
        console.log(el);
        cb(null,el); // first arg as NULL proceeds to all iterations                  
    },
    function (err,el) {
        console.log(el)
    }
);
console.log('x');

输出:

a
s
d
f
in cb
x