Soy nuevo en Node y trato de asegurarme de que estoy usando diseños sanos para una aplicación web impulsada por JSON.El mejor patrón para manejar bucles asíncronos en Node.js
Tengo un montón de datos almacenados en Redis y los estoy recuperando a través de un nodo, transmitiendo los resultados tal como vienen de Redis. He aquí un buen ejemplo de lo que estoy haciendo:
app.get("/facility", function(req, res) {
rc.keys("FACILITY*", function(err, replies) {
res.write("[");
replies.forEach(function (reply, i) {
rc.get(reply, function(err, reply) {
res.write(reply);
if (i == replies.length-1) {
res.write("]");
res.end();
}
else
res.write(",");
});
});
});
});
Esencialmente Estoy consiguiendo un conjunto de teclas de Redis y luego solicitar cada una, que fluye hacia fuera el resultado en JSON semi-manual creado (las cuerdas que salen de Redis ya está en JSON). Ahora esto funciona bien, pero no puedo evitar pensar que el i == replies.length-1 está un poco desordenado.
Podría hacer todo esto con mget en Redis, pero ese no es realmente el punto que trato de conseguir; es la mejor manera de manejar el bucle asincrónico con forEach, transmitir la salida y cerrar con gracia la conexión con res.end con el bucle terminado.
¿Es esta la mejor manera, o hay un patrón más elegante que podría seguir?
de profundas devoluciones de llamada de funciones anidadas, lo usaría la asíncrono .js biblioteca. – BRampersad