Najprostszy sposób na prawidłowe przechwycenie wartości q
zmienna w zamknięciu we współczesnym JavaScript to użycie forEach
:
queries.forEach(function(q) {
client.query(q[0], function(err, result) {
if(err) {
console.log(err);
} else {
q[1](result);
}
});
});
Jeśli nie przechwycisz wartości, Twój kod odzwierciedla ostatnią wartość, którą q
miał, jako funkcja zwrotna wykonywana później, w kontekście funkcji zawierającej.
forEach
, za pomocą funkcji zwrotnej izoluje i przechwytuje wartość q
dzięki czemu może być prawidłowo oceniany przez wewnętrzne wywołanie zwrotne.