Le moyen le plus simple de saisir correctement la valeur du q
variable dans une fermeture en JavaScript moderne consiste à utiliser forEach
:
queries.forEach(function(q) {
client.query(q[0], function(err, result) {
if(err) {
console.log(err);
} else {
q[1](result);
}
});
});
Si vous ne saisissez pas la valeur, votre code reflète la dernière valeur que q
avait, comme la fonction de rappel exécutée plus tard, dans le contexte de la fonction contenante.
forEach
, en utilisant une fonction de rappel isole et capture la valeur de q
afin qu'il puisse être correctement évalué par le rappel interne.