При вызове .then(...)
на Promise
вы должны передать функцию (например, аналогично передаче функции в обработчик нажатия кнопки).
myPromise
.then(() => this.props.dispatch(someAction()))
Прямо сейчас вы звонитефункция вместо передачи.
Ваш код должен выглядеть следующим образом, помня об этом:
firebase.auth().sendPasswordResetEmail(this.state.controls.email.value)
.then(
() => alert("Please Check Your Email")
)
.then(
() => this.reset()
)
.then(
() => this.refs.resetPasswordModal.close()
)
.catch(function(e){
alert(e);
})
(я использовал функции стрелок в моем примере, вы также можете использовать function
-синтаксис, конечно)
Вы правильно сделали это в .catch
, но, похоже, пропустили его в других вызовах!
Вы также можете использовать async
await
синтаксис, который дает вашему коду более синхронный вид:
resetPasswordHandler = async () => {
try {
// Notice the "await" before calling the reset function, which returns a promise.
await firebase
.auth()
.sendPasswordResetEmail(this.state.controls.email.value)
alert("Please Check Your Email")
this.reset()
this.refs.resetPasswordModal.close()
}
catch(e) {
alert(e);
}
};
Если ваша функция переноса имеет ключевое слово async
, вы можете разрешать обещания более синхронно, вызывая их с помощью await
.Затем функция обертывания возвращает само обещание, которое разрешается после завершения его тела.