Javascript 使用Caolan'返回一个值;异步模块
我想知道是否可以使用async.each方法进行一系列计算并获得返回值。一个非常简单的例子是计算数组中所有元素的总和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(
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。您为我再次确认了这一点:)。处理返回值的唯一方法是使用回调!