Rx framework – IObservable<T>.CombineLatest

The IObservable<T>.CombineLatest extension method is very similar to IObservable<T>.Zip and IObservable<T>.Merge in that it combines two observable collections and returns a new one.

Unlike IObservable<T>.Merge, IObservable<T>.CombineLatest does not require the merged observable collections to be of the same type.

Like IObservable<T>.Zip, IObservable<T>.CombineLatest combines ‘pairs‘ of values from the two observable collections, but unlike Zip when a new value becomes available on one collection it does not wait till a new value to be available on the other collection, instead it takes whatever the latest value is from the other collection (provided there is one):

image

Again, like the Merge method, you can either invoke CombineLatest as an extension method:

var zs = xs.CombineLatest(ys, (a, b) => a + b);

or you can invoke it as static method:

var zs = Observable.CombineLatest(xs, ys, (a, b) => a + b);