sql >> Databáze >  >> NoSQL >> Redis

Jak volat funkci po dokončení asynchronních funkcí uvnitř smyčky?

Zde používám sliby Bluebird. Všimněte si, že záměr kódu je poměrně jasný a není zde žádné vnoření.

Nejprve slíbíme volání hgetall a klienta -

var client = Promise.promisifyAll(client);

Nyní napíšeme kód se sliby, .then místo zpětného volání uzlu a agregace s .map . Co .then signalizuje dokončení asynchronní operace. .map vezme řadu věcí a všechny je namapuje na asynchronní operaci, jako je vaše volání hgetall.

Všimněte si, jak Bluebird přidává (ve výchozím nastavení) Async přípona ke slíbeným metodám.

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. Jak nainstaluji Predis na okna XAMPP?

  2. Existuje něco jako Redis DB, ale neomezené velikostí RAM?

  3. Jak znovu připojit klienta redis po restartu/škálování serveru redis

  4. HBase BlockCache 101