everyone.
I have a problem about the 'callback function - scope of variable',
I wanna use the 'i in for loop' to 'the callback function User_UidSearch',
but I cannot use it.
(I hope the solution don't use the global variable.)
Task_TidSearchExecution = function(tid, callback) {
var sql = "SELECT * FROM execution WHERE task = '" + tid + "'";
dbclient.query(sql, function (err, results) {
if (err || results.length <= 0)
callback(false);
else {
console.log(results.length);
for (var i = 0 ; i < results.length ; i++) {
User_UidSearch(results[i].employee, function (user) {
console.log(i);
// results[i]['email'] = user.email;
});
}
callback(results);
}
});
}
the "console.log(i);"
Recheck, this is wrong. -> Outputs are "undefined" of all.
undefined is "console.log(result[i]);"
But the "i" is keep '2' console twice, if results.length is 2.
I know becuz the for loop ending then execute the User_UidSearch,
but how can I slove the it "i" is 0 and 1.
functionlocal scope. But it's used in closure, which needs special logic to work. @Salmon - are you sureconsole.log(i)writesundefinedand not the value ofresults.length?ishould at least be a number, just maybe not the particular values expected. If each log shows the value ofresults.length, then see: JavaScript closure inside loops – simple practical example.