2011-08-29 67 views
1

如何将相同的参数应用于函数数组?nodejs异步同一个参数到一个函数数组?

作品:

async.parallel([func(arg, arg2), func2(arg, arg2)], 
function() { 
    next(); 
}); 

阵列具有内部虽然不确定/各种功能的功能,所以我不知道其功能是我应该发送到并行方法。

在不同的文件中我建立了功能阵列:

funcArray.push(func2) 

因此,我有一个这样的数组:

[func, func2] 

我想只是做:

async.parallel(funcArray, 
function() { 
    next(); 
}); 

并具有所有相同的参数应用于所有功能。我怎样才能做到这一点?谢谢。

最后写我自己:

_.each(obj, function (func) { 
    func(req, res, function() { 
     i++ 
     if (i == objSize) { 
     next() 
     } 
    }) 
    })  

回答

2

未经检验的,但这应该工作:

var args  = [ arg, arg2 ] 
    , funcCalls = [] 
; 

for(var i = 0; i < funcArray.length; i++) { 
    funcCalls.push(function() { 
    funcArray[i].apply(this, args); } 
); 
} 

async.parallel(funcCalls, next); 

或者,如果你已经知道你有多少参数有,你不需要在中间部分用apply

for(var i = 0; i < funcArray.length; i++) { 
    funcCalls.push(function() { 
    funcArray[i](arg, arg2); } 
); 
} 

最后,你真的可以用拧紧了如由例如提供的地图功能。 Underscore.js

async.parallel(_.map(funcArray, 
    function(func) { return function() { func(arg, arg2); } } 
), next); 

......但接下来遇到您的代码的人可能会杀了你。

+1

只是使用async.apply向函数添加参数。请参阅https://github.com/caolan/async#applyfunction-arguments – user1102171

相关问题