Rx framework – IObservable<T>.Catch and IObservable<T>.OnErrorResumeNext

Yan Cui

I help clients go faster for less using serverless technologies.

Like IObservable<T>.Concat, the IObservable<T>.Catch extension method concatenates an observable collection with another.

However, unlike the Concat method where the subscription to the second observable collection happens after the first had completed, in the Catch method the subscription to the second collection happens after and only after the first had excepted!

Which begs a very good question:

What if I want to concatenate an observable collection with another regardless of whether the first succeeds or not?

Well, the answer to that question is IObservable<T>.OnErrorResumeNext, which always subscribes to the second observable collection at the end of the first.

image

Like so many other merge-type extension methods in Rx, there are two flavours to choose from when using the Catch or OnErrorResumeNext methods. Either as extension method:


var zs = xs.Catch(ys);

var zs2 = xs.OnErrorResumeNext(ys);

or as static methods which give you the option to merge more than two observable collections:


var zs = Observable.Catch(xs, ys, us, vs);

var zs2 = Observable.OnErrorResumeNext(xs, ys, us, vs);

Whenever you’re ready, here are 3 ways I can help you:

  1. Production-Ready Serverless: Join 20+ AWS Heroes & Community Builders and 1000+ other students in levelling up your serverless game. This is your one-stop shop for quickly levelling up your serverless skills.
  2. I help clients launch product ideas, improve their development processes and upskill their teams. If you’d like to work together, then let’s get in touch.
  3. Join my community on Discord, ask questions, and join the discussion on all things AWS and Serverless.

2 thoughts on “Rx framework – IObservable<T>.Catch and IObservable<T>.OnErrorResumeNext”

  1. Pingback: Rx framework — IObservable<T>.Repeat | theburningmonk.com

  2. Pingback: Rx framework — IObservable<T>.Retry | theburningmonk.com

Leave a Comment

Your email address will not be published. Required fields are marked *