Redis
 sql >> Database >  >> NoSQL >> Redis

Problema di flusso di controllo con nodo/redis e callback?

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.