Най-лесният начин за правилно улавяне на стойността на q
променлива в затваряне в съвременния JavaScript е да се използва forEach
:
queries.forEach(function(q) {
client.query(q[0], function(err, result) {
if(err) {
console.log(err);
} else {
q[1](result);
}
});
});
Ако не уловите стойността, вашият код отразява последната стойност, която q
имаше, тъй като функцията за обратно извикване, изпълнена по-късно, в контекста на съдържащата функция.
forEach
, чрез използване на функция за обратно извикване изолира и улавя стойността на q
така че може да бъде правилно оценено от вътрешното обратно извикване.