IObservable.Catch 可以继续使用相同的可观察值吗
假设 a 有一个 IObservable:
IObservable<long> obs = ...;
我可以执行以下操作来保证 observable 永远不会停止吗?
IObservable<long> resilientObs = obs.Catch(obs);
因此,当捕获异常时,请继续执行生成异常的相同序列。
Suppose a have an IObservable
:
IObservable<long> obs = ...;
Can I do the following to guarantee that the observable will never ever stop?
IObservable<long> resilientObs = obs.Catch(obs);
So when an exception is caught, continue with the same sequence that generated the exception.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你只能用 Cold observable(即每次返回一个新序列的 Observable)来做到这一点,
但即使如此,你也没有“恢复”一个 Observable,你只是重新启动它。
如果你想维持持久连接(例如,一个因错误而终止的 Web 套接字),你需要一个工厂函数 + Defer:
为了给你更好的建议,你需要告诉我们 obs 的本质以及什么你正在尝试做的事。
You can only do this with a Cold observable (i.e. an Observable that returns a new sequence every time)
But even then, you're not "resuming" an Observable, you're just restarting it.
If you wanted to maintain a persistent connection (say, a web socket that gets terminated because of an error), you need a factory function + Defer:
To give you better advice, you need to tell us the nature of what obs is and what you're trying to do.