Я собирался хотя бы codebase для аутентификации углового огня, и я не мог понять, как работает этот кусок кода.Наблюдаемая следующая путаница использования оператора
В основном я смущен тем, как используется observer.next()
и в каком контексте.
Я понимаю, что этот метод должен возвращать наблюдаемый, но как делает .next()
на нем.
Я также рассмотрел документацию next()
here его псевдоним для takelast
.
Я все еще не понимаю, как это работает здесь.
loginWithFacebook() {
return Observable.create(observer => {
if (this.platform.is('cordova')) {
Facebook.login(['public_profile', 'email']).then(facebookData => {
let provider = firebase.auth.FacebookAuthProvider.credential(facebookData.authResponse.accessToken);
firebase.auth().signInWithCredential(provider).then(firebaseData => {
this.af.database.list('users').update(firebaseData.uid, {
name: firebaseData.displayName,
email: firebaseData.email,
provider: 'facebook',
image: firebaseData.photoURL
});
observer.next();
});
}, error => {
observer.error(error);
});
} else {
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup
}).then((facebookData) => {
this.af.database.list('users').update(facebookData.auth.uid, {
name: facebookData.auth.displayName,
email: facebookData.auth.email,
provider: 'facebook',
image: facebookData.auth.photoURL
});
observer.next();
}).catch((error) => {
console.info("error", error);
observer.error(error);
});
}
});
Заранее благодарен!
.next() не вызывается на возврате Observable. Он называется наблюдателем. Короче говоря, это заставляет созданное наблюдаемое излучать событие. –