我正在尝试在 Angular 应用程序中使用 AngularFire 库。一些 AngularFire 调用返回承诺,我想将它们作为可观察量处理,而不是为了整个应用程序的一致性。我正在使用 rxjs v6
使用from()效果很好,并提供预期的行为,除非发生错误。
如果 Promise 抛出异常,则可观察对象似乎看不到它,并且堆栈跟踪会转储到控制台中,并显示Error: Uncaught (in promise)。
我的第一次尝试
返回 Promise 的 AngularFire 调用:
deleteCampaign(id: string) {
return from(this.campaignCollection.doc(id).delete());
}
Run Code Online (Sandbox Code Playgroud)
调用代码:
deleteCampaign(id: string) {
return this.dataStorageService.deleteCampaign(id)
.pipe(
catchError(
err => {
console.log('error when deleting campaign');
console.log(err);
return throwError(err);
}
)
);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我在控制台中获取堆栈跟踪并且catchError从不触发。
我的第二次尝试
我catch在 内的承诺中添加了 a from,然后尝试将错误作为可观察的重新抛出,因此它看起来像这样:
deleteCampaign(id: string) {
return from(this.campaignCollection.doc(id).delete().catch(
err => {
throwError(err);
}
));
}
Run Code Online (Sandbox Code Playgroud)
我的第三次尝试
很像第二次尝试,但我尝试抛出一个简单的 JavaScript …