kr-observable
Version:
Adds reactivity power for your JavaScript
35 lines (34 loc) • 910 B
JavaScript
export class Executor {
static
static report(adm, property, set = false) {
if (!this.
return;
const runnable = this.
if (set) {
adm.unsubscribe(property, runnable);
}
else {
adm.subscribe(property, runnable);
}
}
static execute(runnable, ...rest) {
runnable.active = true;
if (!runnable.deps) {
runnable.deps = new Set;
}
else {
this.dispose(runnable);
}
this.
const result = runnable.run(...rest);
this.
runnable.active = false;
return result;
}
static dispose(runnable) {
runnable.deps.forEach(this.unsubscribe, runnable);
}
static unsubscribe(list) {
list.delete(this);
}
}