错误处理 - Observable.fork 与 Angular2 中的几个可观察对象连接起来



在我的一个 Angular 应用程序中,我有两个类型为 Observable<Object1[]>Observable<Object2[]> 的对象,它们在resolver中调用不同的 API,如下所示:

resolve(): Observable<[Array<Object1>, Array<Object2>]> {
    const object1 = this.bookingService.executeService1(); // returns Observable<Object1[]>
    const object2 = this.bookingService.executeService2(); // returns Observable<Object2[]>
    return Observable.forkJoin(object1, object2); // Need to do error handing here
}

除非并且直到服务返回错误,否则它工作正常。出错时,它在控制台中显示为"未捕获"。我已经通过邮递员等应用程序检查了服务 api,它确实可以通过它正常工作。

我试图抓住它,因为:

return Observable.forkJoin(object1, object2)
  .catch(error => {
    console.log('error', error);
  });

但这无济于事。

让我知道是否有任何方法可以通过Observable.forkJoin()捕获解析器中的错误;

您可以在

forkJoin的 learnrxjs.io 页面中找到问题的答案。

请注意,如果向 forkJoin 提供任何内部可观察量 错误您将失去任何其他可观察量的值,这些可观察量将或 如果您没有正确捕获错误,则已完成 内部可观察。如果你只关心所有内部可观察量 成功完成,您可以在外部捕获错误。

const example = forkJoin(
  //emit 'Hello' immediately
  of('Hello'),
  //emit 'World' after 1 second
  of('World').pipe(delay(1000)),
  // throw error
  _throw('This will error')
).pipe(catchError(error => of(error)));
<</div> div class="one_answers">

你可以按照 Observable.forkjoin 中的 RxJS Angular2 处理 404 中提到的方式使用它。

希望对您有所帮助!

您可以通过以下方式捕获错误:
let first = Observable.of({value : 1}); let second = Observable.throw({value : 2}); Observable.forkJoin(first, second) .subscribe((res: Array<any>) => console.log(res), (error) => { console.log(error); //{value: 2} will get displayed here });

您还可以单独捕获每个可观察量中的错误,并在这种情况下返回另一个可观察量。
return Observable.forkJoin( this.http.get('/url') .map((res:Response) => res.json()) .catch(res:Response => Observable.of({}), this.http.get('/url2') .map((res:Response) => res.json()) .catch(res:Response => Observable.of({}), );

相关内容

最新更新