retryWhen
연산자(operator) 정의: retryWhen(receives: (errors: Observable) => Observable, the: scheduler): Observable
Retry an observable sequence on error based on custom criteria.
Examples
Example 1: Trigger retry after specified duration
//emit value every 1s
const source = Rx.Observable.interval(1000);
const example = source
.map(val => {
if(val > 5){
//error will be picked up by retryWhen
throw val;
}
return val;
})
.retryWhen(errors => errors
//log error message
.do(val => console.log(`Value ${val} was too high!`))
//restart in 5 seconds
.delayWhen(val => Rx.Observable.timer(val * 1000))
);
/*
output:
0
1
2
3
4
5
"Value 6 was too high!"
--Wait 5 seconds then repeat
*/
const subscribe = example.subscribe(val => console.log(val));
Additional Resources
- retryWhen - Official docs
- Error handling operator: retry and retryWhen - André Staltz
Source Code: https://github.com/ReactiveX/rxjs/blob/master/src/operator/retryWhen.ts