Rx API in depth: Concat, Catch and OnErrorResumeNext

Download this episode

Download Video


In this episode of the Rx API in depth, Jeff talks about three very simular binary operators: Concat, Catch and OnErrorResumeNext

Visit the Reactive Extensions DevLabs page to download and learn more about Rx.



Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • User profile image

      Might be useful to combine all three into one method: IO<T>.ContinueWith(IO<T> onDone, IO<T> onError).  Frankly, I was surprised by the behavior of Concat().  I expected it subscribe immediately and then serialize the observations.


      It might be helpful to come up with a naming scheme where the method name hints at if the supplied observable will be subscribed to immediately (like Zip... or should that be Combine?) and those which subscribe later.  For example the suffix "Then" may work: ConcatThen(), CatchThen(), OnErrorResumeNextThen(), RepeatThen(), etc.

    • User profile image
      Wes Dyer

      ContinueWith is a good idea.  In fact, it already exists in Rx and is an overload of SelectMany.  The only difference is that the SelectMany can continueWith on OnNext, onCompleted, or OnError.  This is the correct overload:


      IObservable<T>.SelectMany(Func<Notification<T>, IObservable<U>)


      Also note that Concat has the same semantics in Rx that is does in Linq to Objects.  Namely that the subscription to the second source doesn't happen until the first source has completed.

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to send us feedback you can Contact Us.