в настоящее время у меня есть провайдер аутентификации Firebase (Angularfire2), который будет выполнять вход пользователя
signInWithEmail(credentials) {
return this.afAuth.auth.signInWithEmailAndPassword(credentials.email, credentials.pw);
}
Я бы вызвал функцию на своей странице следующим образом:
login() {
this.auth.signInWithEmail(credentials)
.then(
() => this.navCtrl.push(MainPage),
(err) => {
console.log("Return Code: " + err.code + " | Message: " + err.message);
});
}
Однако теперь я хотел бы вложить обещание следующим образом:
signInWithEmail(credentials) {
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
.then(() => {
return this.afAuth.auth.signInWithEmailAndPassword(credentials.email, credentials.pw);
}, (err) => {
return Promise.reject(err);
});
}
Это не работает, поскольку возвращается void, поэтому функция signInWithEmail не можетбольше вызываться в текущем порядке.
Каков наилучший подход для фактической обработки обещания setPersistence до того, как будет возвращено обещание signInWithEmailAndPassword?
Стоит ли просто вызывать метод setPersistence на самой странице вместо того, чтобы делать это в провайдере?
Заранее спасибо!