Files
2026-02-13 22:02:30 +01:00

29 lines
508 B
JavaScript

export class Immediate {
_onImmediate;
_timeout;
constructor(callback, args) {
this._onImmediate = callback;
if ("setTimeout" in globalThis) {
this._timeout = setTimeout(callback, 0, ...args);
} else {
callback(...args);
}
}
ref() {
this._timeout?.ref();
return this;
}
unref() {
this._timeout?.unref();
return this;
}
hasRef() {
return this._timeout?.hasRef() ?? false;
}
[Symbol.dispose]() {
if ("clearTimeout" in globalThis) {
clearTimeout(this._timeout);
}
}
}