如何使用ForkJoin RXJS处理错误?

时间:2018-07-25 10:47:24

标签: angular typescript rxjs

所有人。

我想知道可观察项在哪里失败,例如:

如果在deleteProfOffer或updateProfOffer中失败,当我发现错误时如何知道。

我已经尝试过:

let updateOffer = this._op.updateOfferInfo(offerJob);
        let deleteProfOffer = this._op.deleteProfessionsToOffer(this.offer.id, deleteProf2);
        let updateProfOffer = this._op.setProfessionsToOffer(this.offer.id, updateProf2);

        forkJoin([updateOffer, deleteProfOffer, updateProfOffer]).subscribe(results => {
                this.navCtrl.pop();

                if (offerJob.type_offer === 'job_offer')
                    this.presentToast(`La oferta de trabajo se ha ha modificado correctamente`);
                else
                    this.presentToast(`La oferta educativa se ha ha modificado correctamente`);
            }, error => {
                if (error[0])
                    alert("ERROR 0");
                if (error[1])
                    alert("ERROR 1");
                if ((error[2]))
                    alert("ERROR 2");

                this.navCtrl.pop();
                console.log(error)
            }
        );

1 个答案:

答案 0 :(得分:1)

解决方案是:

forkjoin(
   callWithErrorHandler(updateOffer),
   callWithErrorHandler(deleteProfOffer),
   callWithErrorHandler(updateProfOffer)
).subscribe(...)


callWithErrorHandler(toObserve: Observable<any>):Observable<any>{
  return toObserve.pipe(
    catchError( error => console.log(error) )
  )
}

这将包装您的呼叫并添加一个“错误处理程序”(catchError()部分)。

热烈的问候