async.waterfall是async.eachSeries的替代品

时间:2015-04-07 05:40:30

标签: node.js async.js

我必须在node.js中编写一些代码片段,我需要使用async.js来控制异步流。 async.js中有一个名为async.waterfall的函数,可以将一些值传递给下一个执行函数。我的问题是我必须运行async.eachSeries来控制数组上的流量,但我找不到任何选项来传递像瀑布这样的值。有没有?

1 个答案:

答案 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

正如您在输出中看到的那样,当前迭代使用的是最后一次迭代的保存值。