If you have the following code :
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);
a and b to func so that when async.auto(asyncConfig) is executed after the for loop, the context of a and b is preserved ?(Different context of a and b for every execution of func.)
Thank you in advance !
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);
possible alternative using bind :
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);
Make sure to check if the environments where you use this support bind. Also, I am binding the "this" value to asyncConfig, this may not be appropriate for you.
edit : Reading over the question again, are a and b primitives or objects/arrays? If they aren't primitives, then you'll want to clone them.