asynchronous – 传递variables和保存上下文

如果您有以下代码:

var asyncConfig = {}; var a, b; for(var i = 0; i < someValue; i++) { // do something with a // do something with b asyncConfig[i] = function(callback) { func(a, b, callback); // func is async } } // Include some more parallel or series functions to asyncConfig async.auto(asyncConfig); 
  • 如何将variablesab的值传递给func以便在for循环之后执行async.auto(asyncConfig)时,保留ab的上下文?

(每次执行func ab不同上下文)

先谢谢你 !

 var asyncConfig = {}; var a, b; for(var i = 0; i < someValue; i++) { // do something with a // do something with b (function(a,b){ asyncConfig[i] = function(callback) { func(a, b, callback); // func is async } })(a,b); } // Include some more parallel or series functions to asyncConfig async.auto(asyncConfig); 

使用绑定的可能替代:

 var asyncConfig = {}; var a, b; for(var i = 0; i < someValue; i++) { // do something with a // do something with b asyncConfig[i] = func.bind(asyncConfig, a, b); } // Include some more parallel or series functions to asyncConfig async.auto(asyncConfig); 

确保检查您使用此支持的环境是否绑定。 另外,我将“this”值绑定到asyncConfig ,这可能不适合你。

编辑:再次阅读这个问题,是a和b原语或对象/数组? 如果它们不是原始的,那么你就要克隆它们。