Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步-传递变量并保留上下文_Javascript_Node.js_Asynchronous - Fatal编程技术网

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);