使用曹澜's异步模块返回一个值

Return a value using Caolan's async module

本文关键字:返回 一个 模块 异步 曹澜      更新时间:2023-09-26

我想知道是否有可能进行一系列计算并使用async获得返回值。每个方法。一个非常简单的例子是计算数组中所有元素的和。

function Calculator() {
}
Calculator.prototype.sum = function(elements, callback) {
  var total = 0;
  async.each(elements, function(element, callback) {
    total += element;
    callback();
  }, function(err) {
    if (err) throw err;
    //How can I get total as a returned value of sum?
  });
}

谢谢

是的,这应该是可能的:您可以使用async.reduce。(尽管这需要对代码进行一些修改,但当前值必须通过回调传递。

文档中的例子:

async.reduce([1,2,3], 0, function(memo, item, callback){
    // pointless async:
    process.nextTick(function(){
        callback(null, memo + item)
    });
}, function(err, result){
    // result is now equal to the last value of memo, which is 6
});