【发布时间】:2017-10-26 04:54:17
【问题描述】:
我是 usimg angular 2,我正在使用 forkjoin 来处理我必须并行执行多个 rest 调用的场景之一。以下是我的函数
private getBatchObservableData(data: Array<Widget>): Observable<any> {
let observableBatch = [];
data.forEach(widget => {
observableBatch.push(this._http.get(widget.apiPath).delay(500).map((data) => data.json()).share())
});
return Observable.forkJoin(observableBatch);
}
这工作得非常好。但是当任何一个其余调用失败时,wholeforkjoin 都会失败。所以有没有办法发出这些休息调用的值并记录失败的情况。 ??请帮忙。
【问题讨论】:
-
使用
catch(error => Observable.of(error))在组合的HTTP observables上捕获并发出任何错误(作为值),然后测试forkJoin发出的数组中的值,看看是否有Error实例。 -
这基本上可以帮助我记录错误。但是那些成功的其余调用呢?有没有办法获得并显示?
-
哪些调用成功是显而易见的,对于那些调用,数组中的非
Error值和失败的任何调用的Error值。我会写一个答案以使其更清楚。
标签: angular rxjs angular2-services fork-join