为什么我的代码不能访问刚刚创建的用户?

时间:2016-05-28 22:12:53

标签: javascript firebase firebase-authentication

我正在使用以下代码创建用户:

firebase.auth().createUserWithEmailAndPassword($scope.data.mail, $scope.data.pwd)
                .catch(function(error)
                       {
                       });

var user;

while (!user)
{
    user = firebase.auth().currentUser;
}

但是我不知道为什么这次用户变量总是得到一个空值:循环永远不会完成。我目前无法解决这个问题。

1 个答案:

答案 0 :(得分:3)

您不能使用while循环来等待异步结果,因为JavaScript在单个线程上运行。

循环将无限期地执行,这意味着JavaScript运行时永远不会有机会处理承诺,即使它已经完成。

您需要使用承诺的then子句。

firebase.auth().createUserWithEmailAndPassword($scope.data.mail, $scope.data.pwd)
  .then(function() {
     var user = firebase.auth().currentUser;
     // carry on executing code here
  })
  .catch(function(error) {
  });