使用Caolan的异步模块返回一个值

时间:2014-03-18 14:24:35

标签: javascript node.js async.js

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

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?
  });
}

由于

1 个答案:

答案 0 :(得分:2)

是的,应该可以:您可以使用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
});