我使用Firebase的auth().createUserWithEmailAndpassword
来创建用户,我在想是否已经存在电子邮件和密码,只会调用catch(function())
,否则{{1将被调用。但是在测试中,两者都被调用了,这是预期的行为吗?感谢。
then(function(user))
答案 0 :(得分:0)
之所以发生这种情况,是因为您已将catch
放在<{em> then
之前。
catch
捕获错误,然后将控件传递给后续then
- user
将undefined
,因为它返回的是什么由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。