【发布时间】:2015-04-07 23:43:10
【问题描述】:
我必须在 node.js 中编写一些代码 sn-p,我需要使用 async.js 控制异步流。 async.js 中有一个名为 async.waterfall 的函数,它提供了将一些值传递给下一个执行函数的机会。我的问题是我必须运行async.eachSeries 来控制数组上的流,但我找不到任何选项来传递像瀑布这样的值。有吗?
【问题讨论】:
我必须在 node.js 中编写一些代码 sn-p,我需要使用 async.js 控制异步流。 async.js 中有一个名为 async.waterfall 的函数,它提供了将一些值传递给下一个执行函数的机会。我的问题是我必须运行async.eachSeries 来控制数组上的流,但我找不到任何选项来传递像瀑布这样的值。有吗?
【问题讨论】:
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
正如您在输出中看到的,当前迭代正在使用上次迭代的保存值。
【讨论】: