Nechápu, proč
client.smembers
aclient.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.