ix
Version:
The Interactive Extensions for JavaScript
27 lines (25 loc) • 637 B
JavaScript
class ActionSubscription {
constructor(action) {
this.isUnsubscribed = false;
this._action = action;
}
unsubscribe() {
if (!this.isUnsubscribed) {
this.isUnsubscribed = true;
this._action();
}
}
}
export class DefaultScheduler {
get now() {
return Date.now();
}
delay(dueTime) {
return new Promise(res => setTimeout(res, dueTime));
}
schedule(action, dueTime) {
const id = setTimeout(() => action(), dueTime);
return new ActionSubscription(() => clearTimeout(id));
}
}
//# sourceMappingURL=scheduler.mjs.map