RxJS 错误处理全解析
1. RxJS 处理失败的方式
在 RxJS 中,当序列中出现异常时,Observable 会在该点终止。我们可以将重试机制嵌入到代码中,例如在股票行情代码里,若服务器因重启或小故障而失败,至少可以重试获取股票信息。
const requestQuote$ = symbol =>
Rx.Observable.fromPromise(
ajax(webservice.replace(/\$symbol/, symbol)))
.retry(3)
.map(response => response.replace(/"/g, ''))
.map(csv);
不过,这里有个小问题。Promise 本身没有重试能力,而流是可重试的。我们可以将 Promise 包装在另一个可重试的流中,创建一个高阶 Observable。使用 mergeMap() 将其扁平化,把重试操作放在 fetchDataInterval$ 中就能解决这个问题。
const fetchDataInterval$ = symbol => twoSecond$
.mergeMap(() => requestQuote$(symbol)
.distinctUntilChanged((previous, next) => {
// ...
}))
.retry(3);
<
超级会员免费看
订阅专栏 解锁全文
19

被折叠的 条评论
为什么被折叠?



