nodejsasynchronous同一个参数的函数数组?
如何将相同的参数应用于一组函数?
作品:
async.parallel([func(arg, arg2), func2(arg, arg2)], function() { next(); });
数组里有不确定的/各种函数的function,所以我不知道我应该把哪些函数发送给并行方法。
在各种文件中,我正在构build函数数组:
funcArray.push(func2)
结果我有这样一个数组:
[func, func2]
我想只是做:
async.parallel(funcArray, function() { next(); });
所有的function都有相同的论点。 我怎样才能做到这一点? 谢谢。
结束写我自己的:
_.each(obj, function (func) { func(req, res, function () { i++ if (i == objSize) { next() } }) })
未经testing,但这应该工作:
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);
或者,如果你已经知道有多less个参数,你不需要在中间部分使用apply
:
for(var i = 0; i < funcArray.length; i++) { funcCalls.push(function() { funcArray[i](arg, arg2); } ); }
最后你可以使用Underscore.js提供的map函数来加强它:
async.parallel(_.map(funcArray, function(func) { return function() { func(arg, arg2); } } ), next);
…但接下来遇到你的代码的人可能会杀了你。