Я изучаю Rx и работаю над некоторыми семантиками. В качестве эксперимента я создаю наблюдаемый таймер, который вызывает OnError на десятом такте. Пока у меня есть 2 метода, которые, как мне кажется, демонстрируют идентичное поведение:
var timer = Observable.Interval(TimeSpan.FromMilliseconds(200));
// method 1
Observable.Create<long>(
x => timer.Subscribe(tick => {
if (tick == 10)
{
x.OnError(new Exception());
}
x.OnNext(tick);
}));
// method 2
timer.Select(x => {
if (x == 10)
{
throw new Exception();
}
return x;
});
Правильно ли я предполагаю, что оба эти метода будут вести себя точно так же? Если нет, то каковы различия?