【发布时间】:2017-03-28 00:58:18
【问题描述】:
我有一个代码,我为每个 ID 发出一个 ajax 请求并在收到结果时对其进行处理。这是我的实际代码和jsfiddle 的简单副本:
var ids = [1,2,3,4,5,6];
var ids$ = (id) => {
return Observable.of(id);
};
var loadIds$ = (id) => {
if(id == 4) return xhr('/echo/jsoneee/', {id: id});
return xhr('/echo/json/', {id: id});
};
Observable.from(ids)
.concatMap(id => Observable.forkJoin(ids$(id), loadIds$(id)))
.catch((err, caught) => {
//get the id for which loadIds failed
//send the id to subscribe() and continue the subscription
return Observable.empty();
})
.subscribe(result => console.log(result))
但现在我需要修改代码,以便如果发生错误,我将不得不获取 ajax 请求失败的id,然后继续订阅,就像什么都没发生一样。我还不能做到这一点。非常感谢您的帮助。
【问题讨论】:
-
.concatMap(id => Observable.forkJoin(ids$(id), loadIds$(id)))这应该做什么? -
@martin 这只是一个让事情变得更简单的模型。但它可以是
forkJoin或zip但目的是subscribe()应该将id对象和idajax 请求的响应作为一个项目一起作为一个项目,因为我在订阅和内部进行其他处理我需要这两个数据。
标签: javascript ajax rxjs reactive-programming rxjs5