Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Kontrollflussproblem mit Node/Redis und Callbacks?

Ich verstehe nicht, warum client.smembers und client.get (Redis-Lookups) müssen Rückrufe sein und nicht nur Anweisungen - das macht das Leben sehr kompliziert.

Das ist Node. (Ich bin mir ziemlich sicher, dass dieses Thema hier mehr als genug diskutiert wurde, schau dir andere Fragen an, es ist definitiv da)

Wie kann ich sicher sein, dass alle Lookups durchgeführt wurden, bevor socket.broadcast aufgerufen wird? ?

Das ist err für in Callback-Funktion. Dies ist so etwas wie der Standard von Node - der erste Parameter im Callback ist das Fehlerobjekt (null wenn alles in Ordnung ist). Verwenden Sie also einfach so etwas, um sicherzugehen, dass keine Fehler aufgetreten sind:

if (err) {
  ...    // handle errors.
  return // or not, it depends.
}

... // process results

Aber das sieht sehr chaotisch aus.

Du wirst dich daran gewöhnen. Ich finde es eigentlich ganz nett, wenn der Code gut formatiert und das Projekt clever strukturiert ist.

Andere Wege sind:

  • Verwendung von Bibliotheken zur Steuerung des asynchronen Codeflusses (Async.js, Step.js usw.)
  • Wenn Sie denken, dass Code im Spaghetti-Stil ein Durcheinander ist, definieren Sie einige Funktionen, um Ergebnisse zu verarbeiten, und übergeben Sie sie als Parameter anstelle von anonymen.