处理forkJoin中的错误订阅

时间:2018-06-20 08:44:48

标签: angular promise rxjs fork-join

我有下一个功能:

   saveTable() {
    ...

    let promises = [];

     for (index = 0; index < this._TOTAL.length; ++index) {
       let promise = this.db.object(ref).update(this._TOTAL[index]);
       promises.push(promise);
     }

     Observable.forkJoin(promises).subscribe(() => {
       this.messagesService.createMessage('success', `Saved`);
       this.router.navigate(['/dashboard/my-calculations']);
     })
    }

在这种情况下如何处理错误?实际上,在我所有的诺言兑现之后,我只需要使用thencatch,所以对我来说,从根本上不使用forkJoin

2 个答案:

答案 0 :(得分:1)

如果任何(至少一个)是分叉联接,则

forkJoin将引发错误。您可以在错误处理程序中对其进行处理:

Observables

答案 1 :(得分:1)

您可以执行以下代码

import { catchError } from 'rxjs/operators';
import { of } from 'rxjs/observable/of';
import { forkJoin } from 'rxjs/observable/forkJoin';
  forkJoinTest() {
    const prouctIds: number[] = [1, 2, 3];
    const productRequests = prouctIds.map(id => this.productService.getProduct(id).pipe(
      catchError(error => of(`Bad Promise: ${error.message}`))
    ));

    const requests = forkJoin(productRequests);
    requests.subscribe(
      data => console.log(data) //process item or push it to array 
    );
  }

基本上使用catchError运算符,它将为您完成

在此处查看详细信息:Way to handle Parallel Multiple Requests