使用Caolan的asynchronous模块返回一个值

我想知道是否有可能进行一系列计算,并使用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? }); } 

谢谢

是的,它应该是可能的:你可以使用async.reduce 。 (虽然这将需要对代码进行一些更改,但必须通过callback来传递当前值。

来自文档的示例:

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