timer: ref/unref return self
Most calls to ref() and unref() are chainable, timers should be chainable, too. Typical use: var to = setTimeout(ontimeout, 123).unref(); PR-URL: https://github.com/nodejs/node/pull/2905 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Trevor Norris <trevnorris@nodejs.org>
This commit is contained in:
parent
16f86d6c57
commit
94e663ac5f
@ -41,12 +41,16 @@ In the case of `setTimeout` when you `unref` you create a separate timer that
|
|||||||
will wakeup the event loop, creating too many of these may adversely effect
|
will wakeup the event loop, creating too many of these may adversely effect
|
||||||
event loop performance -- use wisely.
|
event loop performance -- use wisely.
|
||||||
|
|
||||||
|
Returns the timer.
|
||||||
|
|
||||||
## ref()
|
## ref()
|
||||||
|
|
||||||
If you had previously `unref()`d a timer you can call `ref()` to explicitly
|
If you had previously `unref()`d a timer you can call `ref()` to explicitly
|
||||||
request the timer hold the program open. If the timer is already `ref`d calling
|
request the timer hold the program open. If the timer is already `ref`d calling
|
||||||
`ref` again will have no effect.
|
`ref` again will have no effect.
|
||||||
|
|
||||||
|
Returns the timer.
|
||||||
|
|
||||||
## setImmediate(callback[, arg][, ...])
|
## setImmediate(callback[, arg][, ...])
|
||||||
|
|
||||||
To schedule the "immediate" execution of `callback` after I/O events
|
To schedule the "immediate" execution of `callback` after I/O events
|
||||||
|
@ -330,11 +330,13 @@ Timeout.prototype.unref = function() {
|
|||||||
this._handle.domain = this.domain;
|
this._handle.domain = this.domain;
|
||||||
this._handle.unref();
|
this._handle.unref();
|
||||||
}
|
}
|
||||||
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
Timeout.prototype.ref = function() {
|
Timeout.prototype.ref = function() {
|
||||||
if (this._handle)
|
if (this._handle)
|
||||||
this._handle.ref();
|
this._handle.ref();
|
||||||
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
Timeout.prototype.close = function() {
|
Timeout.prototype.close = function() {
|
||||||
@ -345,6 +347,7 @@ Timeout.prototype.close = function() {
|
|||||||
} else {
|
} else {
|
||||||
exports.unenroll(this);
|
exports.unenroll(this);
|
||||||
}
|
}
|
||||||
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,6 +12,14 @@ var interval_fired = false,
|
|||||||
var LONG_TIME = 10 * 1000;
|
var LONG_TIME = 10 * 1000;
|
||||||
var SHORT_TIME = 100;
|
var SHORT_TIME = 100;
|
||||||
|
|
||||||
|
assert.doesNotThrow(function() {
|
||||||
|
setTimeout(function() {}, 10).unref().ref().unref();
|
||||||
|
}, 'ref and unref are chainable');
|
||||||
|
|
||||||
|
assert.doesNotThrow(function() {
|
||||||
|
setInterval(function() {}, 10).unref().ref().unref();
|
||||||
|
}, 'ref and unref are chainable');
|
||||||
|
|
||||||
setInterval(function() {
|
setInterval(function() {
|
||||||
interval_fired = true;
|
interval_fired = true;
|
||||||
}, LONG_TIME).unref();
|
}, LONG_TIME).unref();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user