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

Jak wywołać funkcję po zakończeniu funkcji asynchronicznych w pętli?

Używam tutaj obietnic Bluebird. Zwróć uwagę, że intencja kodu jest dość jasna i nie ma zagnieżdżania.

Najpierw obiecajmy wywołanie hgetall i klienta -

var client = Promise.promisifyAll(client);

Teraz napiszmy kod z obietnicami, .then zamiast wywołania zwrotnego węzła i agregacji z .map . Co .then oznacza, że ​​operacja asynchroniczna została zakończona. .map pobiera szereg rzeczy i mapuje je wszystkie do operacji asynchronicznej, podobnie jak wywołanie hgetall.

Zwróć uwagę, jak Bluebird dodaje (domyślnie) Async przyrostek do obiecanych metod.

exports.awesomeThings = function(req, res) {
    // make initial request, map the array - each element to a result
    return client.lrangeAsync("awesomeThings", 0, -1).map(function(awesomeThing) {
       return client.hgetallAsync("awesomething:" + awesomeThing);
    }).then(function(things){ // all results ready 
         console.log(things); // log them
         res.send(JSON.stringify(things)); // send them
         return things; // so you can use from outside
    });
};


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd podczas uruchamiania skryptu Lua z klienta redis

  2. Jeśli Redis jest jednowątkowy, jak może być tak szybki?

  3. Czy wątek Redis list lub set metoda pop jest bezpieczny?

  4. Migracja phpRedis do klastra i spójne haszowanie

  5. Spring Data Redis — identyfikator UUID — ConverterNotFoundException