events: emit cleanup
Cleanup check logic. Place vars at top. Remove PROCESS.
This commit is contained in:
parent
1ccc6fbe05
commit
e1ac2ef7cf
@ -50,43 +50,38 @@ EventEmitter.prototype.setMaxListeners = function(n) {
|
|||||||
this._maxListeners = n;
|
this._maxListeners = n;
|
||||||
};
|
};
|
||||||
|
|
||||||
// non-global reference, for speed.
|
|
||||||
var PROCESS;
|
|
||||||
|
|
||||||
EventEmitter.prototype.emit = function(type) {
|
EventEmitter.prototype.emit = function(type) {
|
||||||
|
var er, handler, len, args, i, listeners;
|
||||||
|
|
||||||
// If there is no 'error' event listener then throw.
|
// If there is no 'error' event listener then throw.
|
||||||
if (type === 'error') {
|
if (type === 'error') {
|
||||||
if (!this._events.error ||
|
if (!this._events.error ||
|
||||||
(typeof this._events.error === 'object' &&
|
(typeof this._events.error === 'object' &&
|
||||||
!this._events.error.length)) {
|
!this._events.error.length)) {
|
||||||
|
er = arguments[1];
|
||||||
if (this.domain) {
|
if (this.domain) {
|
||||||
var er = arguments[1];
|
|
||||||
er.domainEmitter = this;
|
er.domainEmitter = this;
|
||||||
er.domain = this.domain;
|
er.domain = this.domain;
|
||||||
er.domainThrown = false;
|
er.domainThrown = false;
|
||||||
this.domain.emit('error', er);
|
this.domain.emit('error', er);
|
||||||
return false;
|
} else if (er instanceof Error) {
|
||||||
}
|
throw er; // Unhandled 'error' event
|
||||||
|
|
||||||
if (arguments[1] instanceof Error) {
|
|
||||||
throw arguments[1]; // Unhandled 'error' event
|
|
||||||
} else {
|
} else {
|
||||||
throw TypeError("Uncaught, unspecified 'error' event.");
|
throw TypeError('Uncaught, unspecified "error" event.');
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var handler = this._events[type];
|
handler = this._events[type];
|
||||||
if (!handler) return false;
|
|
||||||
|
if (typeof handler === 'undefined')
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (this.domain && this !== process)
|
||||||
|
this.domain.enter();
|
||||||
|
|
||||||
if (typeof handler == 'function') {
|
if (typeof handler == 'function') {
|
||||||
if (this.domain) {
|
|
||||||
PROCESS = PROCESS || process;
|
|
||||||
if (this !== PROCESS) {
|
|
||||||
this.domain.enter();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch (arguments.length) {
|
switch (arguments.length) {
|
||||||
// fast cases
|
// fast cases
|
||||||
case 1:
|
case 1:
|
||||||
@ -100,39 +95,28 @@ EventEmitter.prototype.emit = function(type) {
|
|||||||
break;
|
break;
|
||||||
// slower
|
// slower
|
||||||
default:
|
default:
|
||||||
var l = arguments.length;
|
len = arguments.length;
|
||||||
var args = new Array(l - 1);
|
args = new Array(len - 1);
|
||||||
for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
|
for (i = 1; i < len; i++)
|
||||||
|
args[i - 1] = arguments[i];
|
||||||
handler.apply(this, args);
|
handler.apply(this, args);
|
||||||
}
|
}
|
||||||
if (this.domain && this !== PROCESS) {
|
|
||||||
this.domain.exit();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
|
|
||||||
} else if (typeof handler === 'object') {
|
} else if (typeof handler === 'object') {
|
||||||
if (this.domain) {
|
len = arguments.length;
|
||||||
PROCESS = PROCESS || process;
|
args = new Array(len - 1);
|
||||||
if (this !== PROCESS) {
|
for (i = 1; i < len; i++)
|
||||||
this.domain.enter();
|
args[i - 1] = arguments[i];
|
||||||
}
|
|
||||||
}
|
|
||||||
var l = arguments.length;
|
|
||||||
var args = new Array(l - 1);
|
|
||||||
for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
|
|
||||||
|
|
||||||
var listeners = handler.slice();
|
listeners = handler.slice();
|
||||||
for (var i = 0, l = listeners.length; i < l; i++) {
|
len = listeners.length;
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
listeners[i].apply(this, args);
|
listeners[i].apply(this, args);
|
||||||
}
|
|
||||||
if (this.domain && this !== PROCESS) {
|
|
||||||
this.domain.exit();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.domain && this !== process)
|
||||||
|
this.domain.exit();
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
EventEmitter.prototype.addListener = function(type, listener) {
|
EventEmitter.prototype.addListener = function(type, listener) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user