Ik begrijp niet waarom
client.smembers
enclient.get
(Redis-zoekopdrachten) moeten callbacks zijn in plaats van alleen maar statements - het maakt het leven erg ingewikkeld.
Dat is wat Node is. (Ik ben er vrij zeker van dat dit onderwerp hier meer dan genoeg is besproken, kijk door andere vragen, het is er zeker)
Hoe weet ik zeker dat alle zoekopdrachten zijn uitgevoerd voordat ik
socket.broadcast
aanroep? ?
Dat is wat err
. is voor in callback-functie. Dit is een beetje de standaard van Node - de eerste parameter in callback is het foutobject (null
als alles goed is). Dus gebruik gewoon zoiets als dit om er zeker van te zijn dat er geen fouten zijn opgetreden:
if (err) {
... // handle errors.
return // or not, it depends.
}
... // process results
Maar dit lijkt erg rommelig.
Je zal er aan wennen. Ik vind het eigenlijk wel leuk, als de code goed is opgemaakt en het project slim gestructureerd is.
Andere manieren zijn:
- Libraries gebruiken om asynchrone codestroom te regelen (Async.js, Step.js, etc.)
- Als spaghetti-achtige code is wat je denkt dat rommel is, definieer dan enkele functies om resultaten te verwerken en geef ze door als parameters in plaats van anonieme.