可以IObservable.Catch继续使用相同的可观察对象



假设有一个IObservable:

IObservable<long> obs = ...;

我能做以下的事情来保证这个可观察对象永远不会停止吗?

IObservable<long> resilientObs = obs.Catch(obs);

因此,当捕获到异常时,继续执行生成异常的相同序列。

你只能通过Cold observable(即每次都返回一个新序列的observable)

obs.Retry();

但即使这样,你也不是在"恢复"一个可观察对象,你只是在重新启动它。

如果你想维护一个持久连接(比如,一个由于错误而终止的web套接字),你需要一个工厂函数+ Defer:

Observable.Defer(() => createNewObservable())
    .Retry();

为了给你更好的建议,你需要告诉我们obs的本质是什么,以及你想做什么。

相关内容

  • 没有找到相关文章

最新更新