node.js redis异步调用

时间:2017-08-23 21:24:21

标签: node.js redis nodes node-redis

我是在像这样的foor循环中使用redis从我的数据库中获取数据。

client.smembers(user_key, function(err, reply) {
      console.log("1");
      for(var i=0; i < reply.length; i++) {
        console.log("2");
        client.hgetall(reply[i], function(error, object) {
            console.log("3");
            // Do stuff
        });
      }
      console.log("4");
});

问题是redis是异步的,并且foor循环不会等待redis完成获取数据。例如,如果reply["user_1", "user_2"],那么这将是输出:

1
2
2
4
3

如何强制循环等待redis?

1 个答案:

答案 0 :(得分:0)

使用 underscore :: each()

const _ = require('underscore')
client.smembers(user_key, function(err, reply) {
  _.each(reply,function(element, index){
     client.hgetall(element, function(error, object) {
        // Do stuff
     })
  })
})