sql >> Base de Datos >  >> NoSQL >> Redis

¿Problema de flujo de control con nodo/redis y devoluciones de llamada?

No entiendo por qué client.smembers y client.get (Las búsquedas de Redis) deben ser devoluciones de llamada en lugar de simples declaraciones; hace que la vida sea muy complicada.

Eso es lo que es Nodo. (Estoy bastante seguro de que este tema se discutió más que suficientes veces aquí, revise otras preguntas, definitivamente está ahí)

¿Cómo puedo estar seguro de que se han realizado todas las búsquedas antes de llamar a socket.broadcast? ?

Eso es lo que es err para la función de devolución de llamada. Este es un poco el estándar de Node:el primer parámetro en la devolución de llamada es el objeto de error (null si todo bien). Así que solo usa algo como esto para asegurarte de que no haya errores:

if (err) {
  ...    // handle errors.
  return // or not, it depends.
}

... // process results

Pero esto parece muy complicado.

Te acostumbrarás. De hecho, lo encuentro agradable, cuando el código está bien formateado y el proyecto está estructurado inteligentemente.

Otras formas son:

  • Uso de bibliotecas para controlar el flujo de código asíncrono (Async.js, Step.js, etc.)
  • Si cree que el código es un desorden, defina algunas funciones para procesar los resultados y páselos como parámetros en lugar de anónimos.