小编Hen*_*rik的帖子

处理由 from() 创建的 observable 中的 Promise 抛出的错误

我正在尝试在 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 …

javascript error-handling promise observable angular

5
推荐指数
1
解决办法
3605
查看次数