如何将相同的参数应用于函数数组?
使用:
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()
}
})
})
答案 0 :(得分: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);
...但接下来遇到你代码的下一个人可能会杀了你。