Non capisco perché client.smembers
e client.get
(le ricerche Redis) devono essere callback piuttosto che semplici dichiarazioni:rende la vita molto complicata.
Ecco cos'è Node. (Sono abbastanza sicuro che questo argomento sia stato discusso più che a sufficienza qui, esamina altre domande, è sicuramente lì)
Come posso essere sicuro che tutte le ricerche siano state eseguite prima di chiamare socket.broadcast
?
Ecco cos'è err
per la funzione di richiamata. Questo è un po' lo standard di Node:il primo parametro nella callback è l'oggetto di errore (null
se tutto bene). Quindi usa qualcosa del genere per essere sicuro che non si siano verificati errori:
if (err) {
... // handle errors.
return // or not, it depends.
}
... // process results
Ma questo sembra molto disordinato.
Ti ci abituerai. In realtà lo trovo carino, quando il codice è ben formattato e il progetto è strutturato in modo intelligente.
Altri modi sono:
- Utilizzo delle librerie per controllare il flusso di codice asincrono (Async.js, Step.js, ecc.)
- Se il codice in stile spaghetti è ciò che pensi sia mess, definisci alcune funzioni per elaborare i risultati e passali come parametri anziché come anonimi.