我必须在node.js中编写一些代码片段,我需要使用async.js
来控制异步流。 async.js
中有一个名为async.waterfall
的函数,可以将一些值传递给下一个执行函数。我的问题是我必须运行async.eachSeries
来控制数组上的流量,但我找不到任何选项来传递像瀑布这样的值。有没有?
答案 0 :(得分:1)
async.eachSeries()没有传递值的选项,但您可以使用闭包来保存下一次迭代的值。例如:
var async = require('async');
(function() {
var lastValue = 1;
async.eachSeries([1, 2, 3, 4, 5], function (item, eachCb) {
console.log('item ' + item + ', last value: ' + lastValue);
lastValue = lastValue + item;
eachCb(null);
}, function (err) {
console.log('done:' + lastValue);
});
})();
输出结果为:
item 1, last value: 1
item 2, last value: 2
item 3, last value: 4
item 4, last value: 7
item 5, last value: 11
done: 16
正如您在输出中看到的那样,当前迭代使用的是最后一次迭代的保存值。