events: extract listener check as a function

PR-URL: https://github.com/nodejs/node/pull/24303
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
ZYSzys 2018-11-11 19:31:22 +08:00 committed by Daniel Bevenius
parent 6b91c36103
commit a3d9168293

View File

@ -48,6 +48,13 @@ function lazyErrors() {
return errors; return errors;
} }
function checkListener(listener) {
if (typeof listener !== 'function') {
const errors = lazyErrors();
throw new errors.ERR_INVALID_ARG_TYPE('listener', 'Function', listener);
}
}
Object.defineProperty(EventEmitter, 'defaultMaxListeners', { Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
enumerable: true, enumerable: true,
get: function() { get: function() {
@ -195,10 +202,7 @@ function _addListener(target, type, listener, prepend) {
var events; var events;
var existing; var existing;
if (typeof listener !== 'function') { checkListener(listener);
const errors = lazyErrors();
throw new errors.ERR_INVALID_ARG_TYPE('listener', 'Function', listener);
}
events = target._events; events = target._events;
if (events === undefined) { if (events === undefined) {
@ -283,20 +287,16 @@ function _onceWrap(target, type, listener) {
} }
EventEmitter.prototype.once = function once(type, listener) { EventEmitter.prototype.once = function once(type, listener) {
if (typeof listener !== 'function') { checkListener(listener);
const errors = lazyErrors();
throw new errors.ERR_INVALID_ARG_TYPE('listener', 'Function', listener);
}
this.on(type, _onceWrap(this, type, listener)); this.on(type, _onceWrap(this, type, listener));
return this; return this;
}; };
EventEmitter.prototype.prependOnceListener = EventEmitter.prototype.prependOnceListener =
function prependOnceListener(type, listener) { function prependOnceListener(type, listener) {
if (typeof listener !== 'function') { checkListener(listener);
const errors = lazyErrors();
throw new errors.ERR_INVALID_ARG_TYPE('listener', 'Function', listener);
}
this.prependListener(type, _onceWrap(this, type, listener)); this.prependListener(type, _onceWrap(this, type, listener));
return this; return this;
}; };
@ -306,10 +306,7 @@ EventEmitter.prototype.removeListener =
function removeListener(type, listener) { function removeListener(type, listener) {
var list, events, position, i, originalListener; var list, events, position, i, originalListener;
if (typeof listener !== 'function') { checkListener(listener);
const errors = lazyErrors();
throw new errors.ERR_INVALID_ARG_TYPE('listener', 'Function', listener);
}
events = this._events; events = this._events;
if (events === undefined) if (events === undefined)