retryWhen

RxJS 5 retryWhen

by Leo

HTML

<script src="https://npmcdn.com/@reactivex/[email protected]/dist/global/Rx.umd.js"></script>

JavaScript

var retryTimes = 1;

const source = Rx.Observable.interval(100);
const example = source
  .map(val => {
    if(val > 1){
         var e = new Error(val+"!");
         console.error(e);
         throw e;
    }
    return val;
  })
  .retryWhen(errors => errors.zip(Rx.Observable.range(0, 2), (e, i) => ({e, i}))
            .flatMap(({e, i}) => {
                if(i === 1)
                {
                    return Rx.Observable.throw(e);
                }
                return Rx.Observable.timer((i+1) * 1000);
            }).catch((e) => {
                console.error(e);
                console.log("catched error")
                return Rx.Observable.empty();
            })
  );
const subscribe = example.subscribe(val => console.log(val));