You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.9 KiB
76 lines
1.9 KiB
// License https://jryans.mit-license.org/
|
|
|
|
import {setImmediate, clearImmediate} from './setimmediate';
|
|
export {setImmediate, clearImmediate};
|
|
// DOM APIs, for completeness
|
|
var apply = Function.prototype.apply;
|
|
|
|
export function clearInterval(timeout) {
|
|
if (typeof timeout === 'number' && typeof global.clearInterval === 'function') {
|
|
global.clearInterval(timeout);
|
|
} else {
|
|
clearFn(timeout)
|
|
}
|
|
}
|
|
export function clearTimeout(timeout) {
|
|
if (typeof timeout === 'number' && typeof global.clearTimeout === 'function') {
|
|
global.clearTimeout(timeout);
|
|
} else {
|
|
clearFn(timeout)
|
|
}
|
|
}
|
|
function clearFn(timeout) {
|
|
if (timeout && typeof timeout.close === 'function') {
|
|
timeout.close();
|
|
}
|
|
}
|
|
export function setTimeout() {
|
|
return new Timeout(apply.call(global.setTimeout, window, arguments), clearTimeout);
|
|
}
|
|
export function setInterval() {
|
|
return new Timeout(apply.call(global.setInterval, window, arguments), clearInterval);
|
|
}
|
|
|
|
function Timeout(id) {
|
|
this._id = id;
|
|
}
|
|
Timeout.prototype.unref = Timeout.prototype.ref = function() {};
|
|
Timeout.prototype.close = function() {
|
|
clearFn(this._id);
|
|
}
|
|
|
|
// Does not start the time, just sets up the members needed.
|
|
export function enroll(item, msecs) {
|
|
clearTimeout(item._idleTimeoutId);
|
|
item._idleTimeout = msecs;
|
|
}
|
|
|
|
export function unenroll(item) {
|
|
clearTimeout(item._idleTimeoutId);
|
|
item._idleTimeout = -1;
|
|
}
|
|
export var _unrefActive = active;
|
|
export function active(item) {
|
|
clearTimeout(item._idleTimeoutId);
|
|
|
|
var msecs = item._idleTimeout;
|
|
if (msecs >= 0) {
|
|
item._idleTimeoutId = setTimeout(function onTimeout() {
|
|
if (item._onTimeout)
|
|
item._onTimeout();
|
|
}, msecs);
|
|
}
|
|
}
|
|
|
|
export default {
|
|
setImmediate: setImmediate,
|
|
clearImmediate: clearImmediate,
|
|
setTimeout: setTimeout,
|
|
clearTimeout: clearTimeout,
|
|
setInterval: setInterval,
|
|
clearInterval: clearInterval,
|
|
active: active,
|
|
unenroll: unenroll,
|
|
_unrefActive: _unrefActive,
|
|
enroll: enroll
|
|
};
|
|
|