sql >> Databáze >  >> NoSQL >> Redis

Problém řízení toku pomocí uzlu/redis a zpětných volání?

Nechápu, proč client.smembers a client.get (Redis vyhledávání) musí být spíše zpětnými voláními než pouhými prohlášeními – velmi to komplikuje život.

To je Node. (Jsem si jistý, že toto téma zde bylo probráno více než dostkrát, podívejte se na další otázky, určitě to tam je)

Jak si mohu být jistý, že všechna vyhledávání byla provedena před voláním socket.broadcast ?

To je to, co je err pro funkci zpětného volání. Toto je jakýsi standard Node - první parametr ve zpětném volání je objekt chyby (null pokud je vše v pořádku). Takže použijte něco takového, abyste se ujistili, že nenastaly žádné chyby:

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

... // process results

Ale to vypadá velmi chaoticky.

Zvykneš si. Vlastně mi přijde hezké, když je kód dobře naformátovaný a projekt je chytře strukturovaný.

Další způsoby jsou:

  • Použití knihoven k řízení asynchronního toku kódu (Async.js, Step.js atd.)
  • Pokud si myslíte, že nepořádek je kód ve stylu špaget, definujte některé funkce pro zpracování výsledků a předávejte je jako parametry namísto anonymních.


  1. Redis se místo REDIS_URL pokouší připojit k localhost na Heroku

  2. Zjistěte, zda hodnota obsahuje alespoň jednu číselnou číslici v SQL

  3. Nechci začínat mongoda s `sudo mongod`

  4. Laravel Echo Server, Redis, Socket.IO:Nezdá se, že by fungovaly