如何在RxJs Observable中捕获失败和取消的请求?

时间:2018-06-14 15:43:20

标签: angular rxjs

有一段时间,我注意到我有一些XHR结束时没有HTTP状态,但状态已取消或失败。

它取决于Chrome。在Firefox上我没有成功。

我的应用程序适用于Angular 4和RxJs 5。

是否有任何解决方案可以帮助我捕捉“此错误”。我把它称为“错误”但是没有真正的错误,因为如果有的话我可以很容易地抓住它们。

在RxJs中,当我使用catch时它不会触发,也不会触发(或者它会在我的订阅结束后)。 我也试过forkJoin,zip或concat,flatMap或switchMap之类的东西,但似乎没什么用。

2 个答案:

答案 0 :(得分:2)

正如你的评论中所提到的,当你在View页面上显示这些内容时(即.html),当你遇到XSS问题时,catch不会触发。我认为你需要使用DomSanitizer。

DomSanitizer通过清理值以便在不同的DOM上下文(Detail description of DomSanitization)中安全使用来帮助防止跨站点脚本安全漏洞(XSS)

component.ts文件中使用

import { DomSanitizer } from '@angular/platform-browser';

this.yourVariable = domsanitizer.bypassSecurityTrustHtml('<p>stack Overflow</p>');

并在视图中使用yourVariable,如下所示 <div [innerHtml]="yourVariable"></div>

这不会给你铬错误。

答案 1 :(得分:0)

我不确定取消的请求是否会触发错误状态,但您也可以向可观察链添加超时,这会在最后触发错误。

http.get(..).timeout(2000).catch()