Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Controlar o problema de fluxo com nó/redis e retornos de chamada?


Não entendo por que client.smembers e client.get (pesquisas do Redis) precisam ser retornos de chamada em vez de simplesmente declarações - isso torna a vida muito complicada.

Isso é o que é o Node. (Tenho certeza de que este tópico foi discutido mais do que o suficiente aqui, veja outras perguntas, definitivamente está lá)

Como posso ter certeza de que todas as pesquisas foram realizadas antes de chamar socket.broadcast ?

Isso é o que é err para na função de retorno de chamada. Este é meio que o padrão do Node - o primeiro parâmetro no retorno de chamada é o objeto de erro (null se estiver tudo bem). Então, basta usar algo assim para ter certeza de que nenhum erro ocorreu:
if (err) {
  ...    // handle errors.
  return // or not, it depends.
}

... // process results

Mas isso parece muito confuso.

Você vai se acostumar com isso. Na verdade, estou achando legal, quando o código está bem formatado e o projeto é estruturado de forma inteligente.

Outras formas são:
  • Uso de bibliotecas para controlar o fluxo de código assíncrono (Async.js, Step.js etc.)
  • Se o código estilo espaguete é o que você acha que é bagunça, defina algumas funções para processar os resultados e passe-os como parâmetros em vez de anônimos.