0

当一个失败时,我似乎无法弄清楚如何mergeMap在 Angular 中继续使用。

mergeMap在一个可观察的 inside 上将两个调用串在一起pipe。两者都完成了所有调用,但第二个合并映射调用之一返回错误,因此没有第二个合并调用被映射。

Observable.pipe(
   mergeMap(
     result => {
       return stuff
       });
     }
   ), mergeMap(result => {
     return stuff //one of the calls here will error, but the rest work
   }),
   catchError(error => {
     return of(undefined)
   })
 ).subscribe({
   next: (result) => {
     //this will be undefined if one of the above calls failed, works otherwise
     if(result != undefined)
   { 
   //stuff
   }

我对此仍然很陌生,因此将不胜感激。

4

1 回答 1

1

catchError()在错误传播到主链之前,您需要与嵌套的 Observable 进行链接。

source$.pipe(
  mergeMap(result => stuff.pipe(
    catchError(error => {
      return of(undefined);
    }),
  )),
  mergeMap(result => stuff.pipe(
    catchError(error => {
      return of(undefined);
    })
  )),
);

当然,第二个mergeMap需要能够处理undefined第一个返回的mergeMap

于 2022-01-22T10:45:39.310 回答