【发布时间】:2018-12-18 15:02:30
【问题描述】:
我在让 RxJS 的重试运算符与 map 运算符结合使用时遇到了一些困难。
基本上我要做的是获取一个值流(在本例中为 GitHub 用户用于测试目的),并为每个值对该值执行一些操作。
但是,我希望能够以允许我为该操作设置有限重试次数的方式处理错误。我还假设 RxJS 异步处理这样的事情。
Rx.Observable.fromPromise(jQuery.getJSON("https://api.github.com/users"))
.concatAll(x => Rx.Observable.of(x))
.map(x => {
if(x.id % 5 == 0) {
console.log("error");
return Rx.Observable.throw("error");
}
return x;
})
.retry(3)
.subscribe(x => console.log(x), e => console.log(e));
这是我到目前为止所得到的,但是它应该重试相同的值 3 次,它只会打印一次“错误”,这不是我正在寻找的行为。
我是否遗漏了一些琐碎的事情,或者 RxJS 根本不可能做到这一点?简而言之,我想对值异步执行操作,将所述操作重新绑定有限次,但允许其他有效操作并行继续。我只使用 promises 实现了类似的东西,但代码相当混乱,我希望 RxJS 能让我让事情变得更好读。
【问题讨论】:
标签: javascript rxjs reactive-programming