ラムダ関数の変数をその外部スコープから取得できません。このコードを実行すると、同じ変数で実行されます。関数に変数を渡していますが、ラムダでどのようにスコープが動作するのか誤解しています。async.parallelコールのJS Lambdaスコープ
// Add tasks to async_tasks
for(var i = 0; i < 10; i++){
var task = function(task_callback){
// I want to capture i and pass it to the function
(function(i){
exports.defaultCarWithId(connection, i, function(err, data){
if (err) {
console.log('error in query: ' + err.stack);
fCallback("[Internal Server Error]", null);
return;
}
task_callback();
});
})(i);
};
async_tasks.push(task);
}
// execute tasks
async.parallel(async_tasks, function(err, results){
fCallback(null, user);
return;
});
ここにラムダ関数はありませんか? –
@SterlingArcher私はそれを匿名関数と混同しているようですね。 – Michael
そうかもしれません。 JS内のLambdas(Fatの矢印構文)は 'async.parellel(async_tasks、(err、results)=> {fCallback(null、user); return;}); ' –