Skip to content

Commit bdb6d12

Browse files
sungpaksaduh95
authored andcommitted
events: add hasEventListener util for validate
There was some repetitive logics that validated the existence of eventlisteners. We now replace this with a single line of, `hasEventListener(self, type)`. `self` is the object(e.g. EventEmitter) to be checked whether eventlisteners exists or not. `type` is the type of eventlisteners, which can be `undefined` PR-URL: #55230 Reviewed-By: Jason Zhang <[email protected]>
1 parent 787e51e commit bdb6d12

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

lib/events.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,12 @@ ObjectDefineProperty(EventEmitter, 'defaultMaxListeners', {
276276
},
277277
});
278278

279+
function hasEventListener(self, type) {
280+
if (type === undefined)
281+
return self._events !== undefined;
282+
return self._events !== undefined && self._events[type] !== undefined;
283+
};
284+
279285
ObjectDefineProperties(EventEmitter, {
280286
kMaxEventTargetListeners: {
281287
__proto__: null,
@@ -669,13 +675,11 @@ EventEmitter.prototype.removeListener =
669675
function removeListener(type, listener) {
670676
checkListener(listener);
671677

672-
const events = this._events;
673-
if (events === undefined)
678+
if (!hasEventListener(this, type))
674679
return this;
675680

681+
const events = this._events;
676682
const list = events[type];
677-
if (list === undefined)
678-
return this;
679683

680684
if (list === listener || list.listener === listener) {
681685
this._eventsCount -= 1;
@@ -729,9 +733,9 @@ EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
729733
*/
730734
EventEmitter.prototype.removeAllListeners =
731735
function removeAllListeners(type) {
732-
const events = this._events;
733-
if (events === undefined)
736+
if (!hasEventListener(this))
734737
return this;
738+
const events = this._events;
735739

736740
// Not listening for removeListener, no need to emit
737741
if (events.removeListener === undefined) {
@@ -776,14 +780,10 @@ EventEmitter.prototype.removeAllListeners =
776780
};
777781

778782
function _listeners(target, type, unwrap) {
779-
const events = target._events;
780-
781-
if (events === undefined)
783+
if (!hasEventListener(target, type))
782784
return [];
783785

784-
const evlistener = events[type];
785-
if (evlistener === undefined)
786-
return [];
786+
const evlistener = target._events[type];
787787

788788
if (typeof evlistener === 'function')
789789
return unwrap ? [evlistener.listener || evlistener] : [evlistener];

0 commit comments

Comments
 (0)