为什么Firebase的身份验证会在此示例中触发两次?

时间:2017-03-09 08:19:27

标签: javascript firebase firebase-authentication

我使用Firebase的auth().createUserWithEmailAndpassword来创建用户,我在想是否已经存在电子邮件和密码,只会调用catch(function()),否则{{1将被调用。但是在测试中,两者都被调用了,这是预期的行为吗?感谢。

then(function(user))

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为您已将catch 放在<{em> then之前。

catch捕获错误,然后将控件传递给后续then - userundefined,因为它返回的是什么由catch

构造控制流程的常用方法是将catch放在最后。

firebase
  .auth()
  .createUserWithEmailAndPassword("test@test.com", "passwrd" )
  .then(function (user) {
    console.log('user created', user)
    if (user) {
      db.ref('users/' + user.uid).set(self.info)
    }
  })
  .catch(function (error) {
    if (error) {
      if (error.code === "auth/email-already-in-use") {
        console.log('already exists')
      }
    }
  });

有关Promise及其控制流的更多信息here