使用 Ionic 2 和 Angular 4 的分叉中的处理程序异常



是否可以使用 forkjoin 单独处理错误?我需要同时调用多个请求,在调用请求时在屏幕上显示加载。如果某个请求中发生错误,并且另一个成功,我需要在屏幕上成功显示请求,并向另一个显示错误消息。

Meu código no Page.ts:

getData(){
   this.loadingService.showLoader("Loading, please wait");
   Observable.forkJoin([
      this.issuesService.getIssues(),
      this.categoryService.getCaretories()
    ]).subscribe(
      (response) => {
        let issues = JSON.parse((response[0] as any)._body);
        let categories = JSON.parse((response[1] as any)._body);
        //do something with issues and categories
      }, (error) => {
        console.log(`Backend returned error was: ${error}`);
        this.closeLoading(refresher);
        this.showContent = false;
      }, () => {
        console.log('complete all request');
        this.closeLoading(refresher);
      });
  }
}

如果"问题"请求和"类别"请求中发生错误,则返回成功。我需要在屏幕上显示如何成功分类,并显示"问题"的错误消息。

目前,当发生错误时,将显示所有请求的错误消息。

RxJS forkJoin的工作方式与 Promise.all 类似。如果其中一个源引发错误,则生成的源也会引发错误。如果它不应该抛出,则应在抛出它的源中捕获错误:

Observable.forkJoin(
  this.issuesService.getIssues().catch(err => Observable.of(err)),
  this.categoryService.getCaretories().catch(err => Observable.of(err))
)

然后可以像常规值一样处理错误:

  .subscribe(([issuesRes, categoriesRes]) => {
    if (issuesRes instanceof Error) ...
    else ...
  });

相关内容

  • 没有找到相关文章

最新更新