La forma más sencilla de capturar correctamente el valor de la q
variable en un cierre en JavaScript moderno es usar forEach
:
queries.forEach(function(q) {
client.query(q[0], function(err, result) {
if(err) {
console.log(err);
} else {
q[1](result);
}
});
});
Si no captura el valor, su código refleja el último valor que q
tenía, como la función de devolución de llamada ejecutada más tarde, en el contexto de la función contenedora.
forEach
, mediante el uso de una función de devolución de llamada aísla y captura el valor de q
para que pueda ser evaluado correctamente por la devolución de llamada interna.