Предположим, у нас есть эта наблюдаемая последовательность (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
выдает новое значение, при отмене предыдущих запросов. Если во время вызова веб-сервиса возникает исключение, подписка будет прекращена (после вызова метода OnSequenceFaulted
).
Является ли хорошей практикой реализовать метод OnSequenceFaulted
таким образом? Нужно ли перезапускать (переназначать) sequence
, а также подписку, учитывая, что исключение возникло из наблюдаемого в sequence
? И нужно ли явно удалять неисправную подписку?
public void OnSequenceFaulted(Exception e)
{
subscription?.Dispose();
subscription = sequence.Subscribe(this.Subject.OnNext, this.OnSequenceFaulted);
}