Javascript 异步-传递变量并保留上下文
如果您有以下代码:Javascript 异步-传递变量并保留上下文,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,如果您有以下代码: 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 m
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);
var asyncConfig={};
变量a,b;
对于(var i=0;i
- 如何将变量
和a
的值传递给b
,以便在func
循环后执行for
时,保留async.auto(asyncConfig)
和a
的上下文b
func
时,a
和b
的上下文不同)
提前谢谢你 var asyncConfig={};
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);
变量a,b;
对于(var i=0;i
可能的替代方案使用:
var asyncConfig={};
变量a,b;
对于(var i=0;i
确保检查使用此支持的环境是否绑定。此外,我正在将“this”值绑定到asyncConfig
,这可能不适合您
编辑:再次阅读问题,a和b是原语还是对象/数组?如果它们不是原语,那么您会想克隆它们。可能的复制品是否有人认为我们必须这样做是荒谬的?我只想把我的一些当前状态传递给这个任务执行器。在coffeescript中,我的代码如下所示:
\u metadata=do(metadata)->(callback)->callback(null,metadata);async.auto(metadata:_metadata)
在我看来,考虑到这种解决方法,将来可能会出现一些主要的错误。您还可以使用myFunction.bind(null,a,b)
?
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);