Javascript 使用Caolan'返回一个值;异步模块

Javascript 使用Caolan'返回一个值;异步模块,javascript,node.js,async.js,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(

我想知道是否可以使用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([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
});

对元素数组求和是一个同步操作。为什么要使用
异步。每个
而不是普通的数组循环?正如我所说,这只是一个简单的例子。更复杂的例子应该是计算用户在所有社交网络中的总朋友数,在那里你应该传递社交网络列表和用户名。每个每个社交网络上的好友数都将以异步方式检索,对吗?最后,我想总结所有这些好友数,并将其返回给下一个操作。我可以看到另一个解决方案是以结果作为参数传递回调,但这对单元测试来说很难,不是吗?使用promisesYeap还不算太晚,但是如何将结果值(6)返回给调用方函数?@passkey1510通过回调。您不能将其作为函数的返回值返回。异步代码不是这样工作的!好的,非常感谢@TheHippo。您为我再次确认了这一点:)。处理返回值的唯一方法是使用回调!