Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Bagaimana cara memanggil fungsi setelah menyelesaikan fungsi async di dalam loop?

Saya menggunakan janji Bluebird di sini. Perhatikan bagaimana maksud dari kode ini agak jelas dan tidak ada nesting.

Pertama, mari kita janjikan panggilan hgetall dan klien -

var client = Promise.promisifyAll(client);

Sekarang, mari kita menulis kode dengan janji, .then alih-alih panggilan balik simpul dan agregasi dengan .map . Apa .then tidak adalah sinyal operasi async selesai. .map mengambil berbagai hal dan memetakan semuanya ke operasi asinkron seperti panggilan hgetall Anda.

Perhatikan bagaimana Bluebird menambahkan (secara default) sebuah Async akhiran untuk metode yang dijanjikan.

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. Cara menggunakan SCAN dengan opsi MATCH di Predis

  2. Bagaimana cara mengaitkan properti ke objek socket.io di Redis Store?

  3. ingin menjalankan redis-server di latar belakang tanpa henti

  4. Redis Expire tidak berfungsi

  5. Publikasikan berlangganan dengan nodejs dan redis(node_redis)