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