Jag förstår inte varför
client.smembers
ochclient.get
(Redis-uppslagningar) måste vara återuppringningar snarare än att bara vara påståenden - det gör livet mycket komplicerat.
Det är vad Node är. (Jag är ganska säker på att det här ämnet diskuterades mer än tillräckligt många gånger här, titta igenom andra frågor, det finns definitivt där)
Hur kan jag vara säker på att alla uppslagningar har utförts innan jag anropar
socket.broadcast
?
Det är vad som är err
för återuppringningsfunktion. Detta är typ Nodes standard - första parametern i callback är felobjekt (null
om allt bra). Så använd bara något sånt här för att vara säker på att inga fel uppstod:
if (err) {
... // handle errors.
return // or not, it depends.
}
... // process results
Men det här verkar väldigt rörigt.
Du kommer att vänja dig vid det. Jag tycker faktiskt att det är trevligt när koden är välformaterad och projektet är smart strukturerat.
Andra sätt är:
- Använda bibliotek för att styra asynkront kodflöde (Async.js, Step.js, etc.)
- Om kod i spagettistil är vad du tror att röra är, definiera några funktioner för att bearbeta resultat och skicka dem som parametrar istället för anonyma.