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.