Recipes (original) (raw)

RxJS Recipes

Error Handling

There are many ways of handling errors in RxJS. This will cover a number of recipes when handling errors:

Incremental retry with retryWhen

This example will show how you can back off a retry for a number of seconds between tries instead of retrying them all at once.

function identity(x) { return x; }

Rx.Observable.create(o => { console.log('subscribing'); o.onError(new Error('always fails')); }).retryWhen(function (attempts) { return Rx.Observable.range(1, 3) .zip(attempts, identity) .flatMap(function (i) { console.log('delay retry by ' + i + ' second(s)'); return Rx.Observable.timer(i * 1000); }); }).subscribe();

/* subscribing delay retry by 1 second(s) subscribing delay retry by 2 second(s) subscribing delay retry by 3 second(s) subscribing */