假设我们有这个观察到的序列(RX)和匹配订阅:C#如何重启的RX订阅
var behaviorSubject = new BehaviorSubject<int>(3);
var sequence = behaviorSubject.Select(x => this.webservice.Call(x)).Switch();
var subscription = this.sequence.Subscribe(this.Subject.OnNext, this.OnSequenceFaulted);
序列意味着每个behaviorSubject
发出一个新值的时间做一个Web服务调用的同时,取消以前的请求。如果在web服务调用期间发生异常,订阅将被终止(调用OnSequenceFaulted
方法后)。
实施这样的OnSequenceFaulted
方法是否是一种很好的做法?我们是否需要重新启动(重新分配)sequence
以及订阅,因为异常起源于sequence
内的可观察项?是否需要明确处理故障订阅?
public void OnSequenceFaulted(Exception e)
{
subscription?.Dispose();
subscription = sequence.Subscribe(this.Subject.OnNext, this.OnSequenceFaulted);
}