Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

timers: refactor timer callback initialization #26583

Closed
wants to merge 3 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
timers: refactor to use module.exports
  • Loading branch information
joyeecheung committed Mar 18, 2019
commit a53dc0bfcc9481d0f04f352d1212729a7746c6fd
60 changes: 30 additions & 30 deletions lib/timers.js
Original file line number Diff line number Diff line change
Expand Up @@ -185,16 +185,15 @@ function decRefCount() {

// Schedule or re-schedule a timer.
// The item must have been enroll()'d first.
const active = exports.active = function(item) {
function active(item) {
insert(item, true, getLibuvNow());
};
}

// Internal APIs that need timeouts should use `_unrefActive()` instead of
// `active()` so that they do not unnecessarily keep the process open.
exports._unrefActive = function(item) {
function _unrefActive(item) {
insert(item, false, getLibuvNow());
};

}

// The underlying logic for scheduling or re-scheduling a timer.
//
Expand Down Expand Up @@ -406,12 +405,6 @@ function unenroll(item) {
item._idleTimeout = -1;
}

exports.unenroll = util.deprecate(unenroll,
'timers.unenroll() is deprecated. ' +
'Please use clearTimeout instead.',
'DEP0096');


// Make a regular object able to act as a timer by setting some properties.
// This function does not start the timer, see `active()`.
// Using existing objects as timers slightly reduces object overhead.
Expand All @@ -426,11 +419,6 @@ function enroll(item, msecs) {
item._idleTimeout = msecs;
}

exports.enroll = util.deprecate(enroll,
'timers.enroll() is deprecated. ' +
'Please use setTimeout instead.',
'DEP0095');


/*
* DOM-style timers
Expand Down Expand Up @@ -476,18 +464,14 @@ setTimeout[internalUtil.promisify.custom] = function(after, value) {
});
};

exports.setTimeout = setTimeout;


const clearTimeout = exports.clearTimeout = function clearTimeout(timer) {
function clearTimeout(timer) {
if (timer && timer._onTimeout) {
timer._onTimeout = null;
unenroll(timer);
}
};

}

exports.setInterval = function setInterval(callback, repeat, arg1, arg2, arg3) {
function setInterval(callback, repeat, arg1, arg2, arg3) {
if (typeof callback !== 'function') {
throw new ERR_INVALID_CALLBACK();
}
Expand Down Expand Up @@ -517,14 +501,14 @@ exports.setInterval = function setInterval(callback, repeat, arg1, arg2, arg3) {
active(timeout);

return timeout;
};
}

exports.clearInterval = function clearInterval(timer) {
function clearInterval(timer) {
// clearTimeout and clearInterval can be used to clear timers created from
// both setTimeout and setInterval, as specified by HTML Living Standard:
// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
clearTimeout(timer);
};
}


Timeout.prototype.unref = function() {
Expand Down Expand Up @@ -739,10 +723,7 @@ setImmediate[internalUtil.promisify.custom] = function(value) {
return new Promise((resolve) => new Immediate(resolve, [value]));
};

exports.setImmediate = setImmediate;


exports.clearImmediate = function clearImmediate(immediate) {
function clearImmediate(immediate) {
if (!immediate || immediate._destroyed)
return;

Expand All @@ -760,4 +741,23 @@ exports.clearImmediate = function clearImmediate(immediate) {
immediate._onImmediate = null;

immediateQueue.remove(immediate);
}

module.exports = {
_unrefActive,
active,
setTimeout,
clearTimeout,
setImmediate,
clearImmediate,
setInterval,
clearInterval,
unenroll: util.deprecate(
unenroll,
'timers.unenroll() is deprecated. Please use clearTimeout instead.',
'DEP0096'),
enroll: util.deprecate(
enroll,
'timers.enroll() is deprecated. Please use setTimeout instead.',
'DEP0095')
};