API, возвращающие обещание, являются асинхронными и возвращаются немедленно. Выполнение переходит к коду, следующему за обещанием, и обратные вызовы then
и catch
будут вызваны некоторое время спустя, после завершения API.
user
имеет значение только после завершения createUserWithEmailAndPassword
, и вызывается обратный вызов then
. Вам нужно будет убедиться, что ваш код не использует его, пока это не произойдет. Попробуйте переместить код, который использует user
, в обратные вызовы.
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(function () {
user = firebase.auth().currentUser;
user.sendEmailVerification();
})
.then(function () {
user.updateProfile({
displayName: firstname + ' ' + lastname,
});
// Move the code up here where `user` definitely has a value
var name;
var uemail;
name = firstname + ' ' + lastname;
uemail = user.email;
alert('Email verification code was sent to ' + uemail + ', ' + name);
})
.catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorCode);
console.log(errorMessage);
});
}