我有一个名为signup的功能,该功能使用Web项目中的javascript将用户添加到我的Firebase数据库。我的函数运行良好,但是当我想在函数末尾重定向到另一个页面时,它不会将用户添加到我的数据库中。在底部的代码中,如果删除if语句,则一切正常,但是使用它,它会重定向到索引页,但不会添加用户。
function signup() {
var UserEmail = document.getElementById("email").value;
var UserPassword = document.getElementById("password").value;
var errorCode = null;
var errorMessage = null;
firebase.auth().createUserWithEmailAndPassword(UserEmail,UserPassword).catch(function (error) {
// Handle Errors here.
errorCode = error.code;
errorMessage = error.message;
console.log(errorMessage);
});
if (errorCode == null) {
window.location = '/index.html';
}
}
答案 0 :(得分:0)
createUserWithEmailAndPassword(...)
正在返回未来。因此,您的catch函数中的代码将被异步调用。
因此,以下代码
if (errorCode == null) {
window.location = '/index.html';
}
在您甚至没有从语句中检索答案之前,可能会调用,因为它不在错误块中。目前,errorCode仍为null。
要解决此问题,您可以访问函数调用的“ then”回调:
firebase.auth().createUserWithEmailAndPassword(UserEmail,UserPassword).then((userData) {
//Redirect the user here
}).catch((error) {
//Your Error-Handling
});