【发布时间】:2017-01-30 21:54:52
【问题描述】:
我在 Angular 2 应用程序中使用 RxJs 从 API 中并行获取多个页面的数据,并保存任何失败的请求以供将来重试。
为此,我想捕获由 flatMap-ing http get 请求(下面的代码)生成的错误,并继续进行进一步的流处理。如果出现错误,我当前的解决方案会导致流中断。
Rx.Observable.range(1, 5)
.flatMap(pageNo => {
params.set('page', ''+pageNo);
return this.http.get(this.API_GET, params)
.catch( (err) => {
//save request
return Rx.Observable.throw(new Error('http failed'));
});
})
.map((res) => res.json());
假设在上面的示例中,第 2 页和第 3 页的 HTTP 请求失败。我想为这两个请求处理错误(保存失败的请求稍后重试)并让其他请求继续并映射到 json()。
我尝试使用 .onErrorResumeNext 代替 catch,但我无法完成这项工作。
【问题讨论】: