RxJs: 并发处理的错误处理

2021-03-31 04:28

阅读:367

标签:使用   代码   cat   比较   针对   fork   搜索引擎   style   文件上传   

RxJs中提供了n种operators来支持并发,譬如map, mergeAll, switchMap等等。具体可以查看rxjs的官方文档或者搜索引擎。然而,现实中比较常见的并发请求,是需要只针对出错的需求进行重新计算。

场景一,多文件上传时,为了缩短客户端的响应时间,需要并发上传请求。同时,对其中个别出错的request,进行额外处理和再上传。

场景二,并发读取多种主数据时,其中个别request出错,应该只针对出错的request进行额外处理和再发送request。

为了满足这个需求,当使用forkJoin时,以下为一个实现代码

 1     forkJoin([
 2       of(1),
 3       of(2),
 4       of(4).pipe(map(() => { throw new Error(‘test‘); }), catchError(err => { return of(‘retry ‘ + 4)})),
 5       of(3)
 6     ])
 7     .subscribe({
 8       next: val => {
 9         console.log(val);
10       },
11       error: err => {
12         console.error(err);
13       }
14     });

得到的Console结果是:

1 [1, 2, "retry 4", 3]
2 0: 1
3 1: 2
4 2: "retry 4"
5 3: 3
6 length: 4

 

用mergeAll来实现:

    of([
      1,
      2,
      () => { throw new Error(‘test‘); },
      3
    ]).pipe(
      map(val => val),
      mergeAll(),
      catchError(() => { return of(‘error catched‘) })
    )
    .subscribe({
      next: val => {
        console.log(val);
      },
      error: err => {
        console.error(err);
      }
    });

 

是为之记。
Alva Chien
2020.03.28

 

RxJs: 并发处理的错误处理

标签:使用   代码   cat   比较   针对   fork   搜索引擎   style   文件上传   

原文地址:https://www.cnblogs.com/alvachien/p/12589509.html


评论


亲,登录后才可以留言!