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

Styre flowproblem med node/redis og tilbagekald?

Jeg forstår ikke hvorfor client.smembers og client.get (Redis opslag) skal være tilbagekald snarere end blot at være udsagn - det gør livet meget kompliceret.

Det er, hvad Node er. (Jeg er ret sikker på, at dette emne blev diskuteret mere end nok gange her, se andre spørgsmål igennem, det er der helt sikkert)

Hvordan kan jeg være sikker på, at alle opslag er blevet udført, før jeg kalder socket.broadcast ?

Det er hvad der er err til tilbagekaldsfunktion. Dette er lidt af Nodes standard - første parameter i tilbagekald er fejlobjekt (null hvis alt er i orden). Så brug bare noget som dette for at være sikker på, at der ikke opstod fejl:

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

... // process results

Men det virker meget rodet.

Du vil vænne dig til det. Jeg synes faktisk, det er rart, når koden er godt formateret og projektet er smart struktureret.

Andre måder er:

  • Brug af biblioteker til at styre asynkron kode-flow (Async.js, Step.js osv.)
  • Hvis spaghetti-lignende kode er, hvad du tror, ​​rod er, skal du definere nogle funktioner til at behandle resultater og videregive dem som parametre i stedet for anonyme.


  1. Single cache frontend og backend

  2. Formater et tal som en procentdel i SQL

  3. Hvordan skifter jeg mellem redis-databasen?

  4. Mongoose:CastError:Cast to ObjectId mislykkedes for værdien [object Object] ved sti _id