1

我想在函数外检索变量“用户”:

    var users;

    client.lrange("comptes", 0, -1, function(err, replies) {

    replies.forEach(function(reply, i) {
      users = JSON.parse(reply.toString());
    });
});

// here to retrieve the "users" variable
console.log(users); // = undefined

function findById(id, fn) {
  var idx = id - 1;
  if (users[idx]) {
    fn(null, users[idx]);
  } else {
    fn(new Error('User ' + id + ' does not exist'));
  }
}

function findByUsername(username, fn) {
  for (var i = 0, len = users.length; i < len; i++) {
    var user = users[i];
    if (user.username === username) {
      return fn(null, user);
    }
  }
  return fn(null, null);
}

我使用 Q异步模块,但我不知道该怎么做..

谢谢你的帮助 。

4

2 回答 2

0

该变量在您的使用范围内,这意味着它只能在您从未给它一个值的情况下未定义(如果您不计算回调,则不会)。尝试使用这条线var users = "damn not yet";,这可能就是你在控制台中得到的。这意味着您的回调函数lrange没有被调用,或者逻辑错误。

于 2013-05-10T11:58:05.010 回答
0

像这样的东西?

getcomptes = function(callback){
    client.lrange('comptes', 0, -1, function(err, users){
            callback(err, users);
    });
};
于 2013-05-10T18:08:22.057 回答