gpt4 book ai didi

javascript - async.forEach 系列仅在元素值传递给回调时迭代第一个元素

转载 作者:行者123 更新时间:2023-11-29 20:58:09 24 4
gpt4 key购买 nike

以下代码尝试使用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

最佳答案

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

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

关于javascript - async.forEach 系列仅在元素值传递给回调时迭代第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48199341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com