Nejjednodušší způsob, jak správně zachytit hodnotu q
proměnnou v uzávěru v moderním JavaScriptu je použití forEach
:
queries.forEach(function(q) {
client.query(q[0], function(err, result) {
if(err) {
console.log(err);
} else {
q[1](result);
}
});
});
Pokud nezachytíte hodnotu, váš kód odráží poslední hodnotu q
měl, jako funkce zpětného volání provedené později, v kontextu obsahující funkce.
forEach
, pomocí funkce zpětného volání izoluje a zachytí hodnotu q
tak to může být správně vyhodnoceno vnitřním zpětným voláním.