假设有一个IObservable
:
IObservable<long> obs = ...;
我能做以下的事情来保证这个可观察对象永远不会停止吗?
IObservable<long> resilientObs = obs.Catch(obs);
因此,当捕获到异常时,继续执行生成异常的相同序列。
你只能通过Cold observable(即每次都返回一个新序列的observable)
obs.Retry();
但即使这样,你也不是在"恢复"一个可观察对象,你只是在重新启动它。
如果你想维护一个持久连接(比如,一个由于错误而终止的web套接字),你需要一个工厂函数+ Defer:
Observable.Defer(() => createNewObservable())
.Retry();
为了给你更好的建议,你需要告诉我们obs的本质是什么,以及你想做什么。