Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Problem z przepływem kontroli z węzłem/redis i wywołaniami zwrotnymi?

Nie rozumiem, dlaczego client.smembers i client.get (wyszukiwania Redis) muszą być wywołaniami zwrotnymi, a nie tylko instrukcjami - to bardzo komplikuje życie.

Tym właśnie jest Węzeł. (Jestem prawie pewien, że ten temat był omawiany tutaj wystarczająco dużo razy, przejrzyj inne pytania, na pewno tam jest)

Jak mogę się upewnić, że wszystkie wyszukiwania zostały wykonane przed wywołaniem socket.broadcast ?

To właśnie jest err w funkcji zwrotnej. Jest to swego rodzaju standard Node'a - pierwszym parametrem w wywołaniu zwrotnym jest obiekt błędu (null jeśli wszystko w porządku). Więc po prostu użyj czegoś takiego, aby upewnić się, że nie wystąpiły żadne błędy:

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

... // process results

Ale wydaje się to bardzo niechlujne.

Przyzwyczaisz się. Właściwie uważam to za miłe, gdy kod jest dobrze sformatowany, a projekt ma sprytną strukturę.

Inne sposoby to:

  • Korzystanie z bibliotek do kontrolowania przepływu kodu asynchronicznego (Async.js, Step.js itp.)
  • Jeśli kod w stylu spaghetti jest tym, co uważasz za bałagan, zdefiniuj kilka funkcji do przetwarzania wyników i przekaż je jako parametry zamiast anonimowych.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Django Redis Błąd nieznane polecenie „BZPOPMIN”

  2. Nie można powiązać odbiornika TCP *:6379 przy użyciu Redis w systemie Windows

  3. TTL dla członka zbioru

  4. Jak zdefiniować TTL dla strumieni redis?

  5. Opcja Redis-cli --csv (eksportowanie do csv)