当可观察到的结果遇到错误时,是什么导致了这个TypeError?这个错误使我相信,出于某种原因,fbLogin.unsubscribe();是问题所在,但即使删除了这两行,错误仍然存在。我使用的是rxjs@^5.5.2。
ERROR TypeError: this._parentSubscription.unsubscribe is not a function
at Subscriber._unsubscribeParentSubscription (Subscriber.js:110)
at Subscriber.error (Subscriber.js:75)
at auth.ts:54
at e.b (auth.esm.js:17)
at Fb (auth.esm.js:20)
at Bb (auth.esm.js:20)
at A.g.Xb (auth.esm.js:19)
at kb (auth.esm.js:13)
at t.invoke (polyfills.js:3)
at Object.onInvoke (core.js:4760)
//login.ts
loginWithFacebook(): void{
let fbLogin = this.authData.loginWithFacebook().subscribe(() => {
fbLogin.unsubscribe();
this.navCtrl.setRoot('HomePage');
}, error => {
fbLogin.unsubscribe();
console.log(error);
});
}
//auth.ts
loginWithFacebook(): Observable<any> {
return Observable.create(observer => {
if (this.platform.is('cordova')) {
return this.fb.login(['email', 'public_profile']).then(res => {
const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken);
this.afAuth.auth.signInWithCredential(facebookCredential).then(()=> {
observer.next();
}).catch(error => {
console.log(error);
observer.error(error);
});
});
} else {
return this.afAuth.auth.signInWithPopup(new firebase.auth.FacebookAuthProvider()).then(()=> {
observer.next();
}).catch(error => {
console.log(error);
observer.error(error); //this is auth.ts:54
});
}
});
}发布于 2018-09-24 07:11:27
异步函数目前在Observable.create中不支持(参见这个RxJ发布评论)。
您可以使用from或defer来将您的承诺包装为可观察的。
https://stackoverflow.com/questions/52337488
复制相似问题