【发布时间】:2016-11-08 20:49:43
【问题描述】:
我正在使用 Angular2 异步管道将值流式传输到 DOM。这是一个非常简单的例子:
const stream = Observable.interval(1000)
.take(5)
.map(n => { if (n === 3) throw "ERROR"; return n; });
<div *ngFor="for num of stream | async">
{{num}}
</div>
<div id="error"></div>
我想做的是显示 1-5 的序列,但是在错误项 (3) 上,以某种方式使用错误消息填充 #error div。
这似乎需要两件事:首先是 Angular 异步管道能够智能地处理错误,我没有看到任何迹象。看源码,显然是抛出了一个JS异常,看起来不太友好。
其次是错误后重新启动或继续序列的能力。我已经读过catch 和onErrorResumeNext 等等,但它们都涉及另一个序列,该序列将在错误时切换到。这极大地复杂了生成流的逻辑,我只想在上面放置一系列数字(在这个简单的例子中)。我有一种下沉的感觉,一旦发生错误,游戏就结束了,observable 完成了,只能用不同的 observable 来“重新启动”。我还在学习 observables;真的是这样吗?
所以我的问题是双重的:
- Angular2 的异步管道可以在错误的情况下执行智能操作吗?
- observables 是否有一些简单的方法可以在出错后继续?
【问题讨论】:
标签: error-handling angular rxjs