分配给变量时,函数未定义

时间:2016-04-17 07:11:16

标签: javascript reactjs

我正在使用Firebase作为后端在React中进行一些身份验证。

我有一个函数来检查用户是否存在按预期工作:

checkIfUserExists(uid) {
  ref.child('users').child(uid).once('value', function(snapshot) {
    if (snapshot.exists()) {
      console.log("User exists");
      return true;
    } else {
      console.log("User does not exist");
      return false;
    }
  });
}

当我调用它传递一个uid时,如果用户存在与否,它将写入控制台。

this.checkIfUserExists(userId);

我想获得用户是否登录的布尔表示,但尝试执行此类操作将始终打印“无用户”。

if (this.checkIfUserExists(userId)) {
  console.log('The user does really exist');
} else {
  console.log('No user');      
}

如果我尝试

console.log(this.checkIfUserExists(userId));

控制台输出“未定义”。

我接近这个错误的方式吗?为什么不明确?

1 个答案:

答案 0 :(得分:1)

内部函数内部的return语句不会通过外部函数返回值。而是尝试发送像这样的函数

checkIfUserExists(uid, callback) {
  ref.child('users').child(uid).once('value', function(snapshot) {
    callback.call(null, snapshot.exists());
  });
};

checkIfUserExists(uid, function(exists){
  if(exists){
    console.log("User exists");
  }else{
    console.log("User does not exist"); 
  }
});

<强> More on .call() here in documentation