Det enklaste sättet att korrekt fånga värdet på q
variabel i en stängning i modern JavaScript är att använda forEach
:
queries.forEach(function(q) {
client.query(q[0], function(err, result) {
if(err) {
console.log(err);
} else {
q[1](result);
}
});
});
Om du inte fångar värdet återspeglar din kod det sista värdet som q
hade, som återuppringningsfunktionen som exekveras senare, i sammanhanget med den innehållande funktionen.
forEach
, genom att använda en återuppringningsfunktion isolerar och fångar värdet på q
så att det kan utvärderas korrekt genom den inre återuppringningen.