mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
33 lines
961 B
JavaScript
33 lines
961 B
JavaScript
|
import { Subscriber } from '../Subscriber';
|
||
|
export function retry(count = -1) {
|
||
|
return (source) => source.lift(new RetryOperator(count, source));
|
||
|
}
|
||
|
class RetryOperator {
|
||
|
constructor(count, source) {
|
||
|
this.count = count;
|
||
|
this.source = source;
|
||
|
}
|
||
|
call(subscriber, source) {
|
||
|
return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));
|
||
|
}
|
||
|
}
|
||
|
class RetrySubscriber extends Subscriber {
|
||
|
constructor(destination, count, source) {
|
||
|
super(destination);
|
||
|
this.count = count;
|
||
|
this.source = source;
|
||
|
}
|
||
|
error(err) {
|
||
|
if (!this.isStopped) {
|
||
|
const { source, count } = this;
|
||
|
if (count === 0) {
|
||
|
return super.error(err);
|
||
|
}
|
||
|
else if (count > -1) {
|
||
|
this.count = count - 1;
|
||
|
}
|
||
|
source.subscribe(this._unsubscribeAndRecycle());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=retry.js.map
|