@lifaon/rx-js-light
Version:
Blazing fast Observables
31 lines (30 loc) • 634 B
JavaScript
export class Subscription {
constructor(subscribe, emit) {
this.subscribe = subscribe;
this.emit = emit;
this._unsubscribe = null;
}
isActivated() {
return this._unsubscribe !== null;
}
activate() {
if (this._unsubscribe === null) {
this._unsubscribe = this.subscribe(this.emit);
}
return this;
}
deactivate() {
if (this._unsubscribe !== null) {
this._unsubscribe();
this._unsubscribe = null;
}
return this;
}
toggle(activate = !this.isActivated()) {
if (activate) {
return this.activate();
} else {
return this.deactivate();
}
}
}