Created
August 5, 2011 11:21
-
-
Save koichik/1127338 to your computer and use it in GitHub Desktop.
Fix this.event
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From dc27ef175eb43e591e420c9831b4ef0a7f90f111 Mon Sep 17 00:00:00 2001 | |
From: koichik <koichik@improvement.jp> | |
Date: Fri, 5 Aug 2011 20:02:47 +0900 | |
Subject: [PATCH] Fix this.event | |
--- | |
lib/events.js | 12 ++++++++++-- | |
1 files changed, 10 insertions(+), 2 deletions(-) | |
diff --git a/lib/events.js b/lib/events.js | |
index d275b80..fd7a9f3 100644 | |
--- a/lib/events.js | |
+++ b/lib/events.js | |
@@ -187,11 +187,15 @@ EventEmitter.prototype.many = function(event, ttl, fn) { | |
EventEmitter.prototype.emit = function() { | |
this._events || init.call(this); | |
+ var previousType = this.event; | |
var type = arguments[0]; | |
this.event = type; | |
if (type === 'newListener') { | |
- if (!this._events.newListener) { return false; } | |
+ if (!this._events.newListener) { | |
+ this.event = previousType; | |
+ return false; | |
+ } | |
} | |
// Loop through the *_all* functions and invoke them. | |
@@ -216,6 +220,7 @@ EventEmitter.prototype.emit = function() { | |
} else { | |
throw new Error("Uncaught, unspecified 'error' event."); | |
} | |
+ this.event = previousType; | |
return false; | |
} | |
} | |
@@ -250,6 +255,7 @@ EventEmitter.prototype.emit = function() { | |
for (var i = 1; i < l; i++) args[i - 1] = arguments[i]; | |
handler.apply(this, args); | |
} | |
+ this.event = previousType; | |
return true; | |
} | |
else if (handler) { | |
@@ -261,9 +267,11 @@ EventEmitter.prototype.emit = function() { | |
for (var i = 0, l = listeners.length; i < l; i++) { | |
listeners[i].apply(this, args); | |
} | |
+ this.event = previousType; | |
return true; | |
} | |
+ this.event = previousType; | |
}; | |
EventEmitter.prototype.on = function(type, listener) { | |
@@ -464,4 +472,4 @@ EventEmitter.prototype.listenersAny = function() { | |
}; | |
-exports.EventEmitter = EventEmitter; | |
\ No newline at end of file | |
+exports.EventEmitter = EventEmitter; | |
-- | |
1.7.4.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* test1.js | |
** master: | |
real 0m3.005s | |
user 0m3.290s | |
sys 0m0.050s | |
** #1457: | |
real 0m3.884s | |
user 0m3.980s | |
sys 0m0.030s | |
** this fix applied: | |
real 0m4.384s | |
user 0m4.530s | |
sys 0m0.040s | |
* test2.js | |
** master: | |
real 0m3.363s | |
user 0m3.680s | |
sys 0m0.060s | |
** #1457: | |
real 0m4.264s | |
user 0m4.360s | |
sys 0m0.070s | |
** this fix applied: | |
real 0m4.441s | |
user 0m4.870s | |
sys 0m0.100s | |
* test3.js | |
* master: | |
real 0m18.348s | |
user 0m12.440s | |
sys 0m8.650s | |
** #1457: | |
real 0m17.727s | |
user 0m16.450s | |
sys 0m3.150s | |
** this fix applied: | |
real 0m18.016s | |
user 0m17.040s | |
sys 0m2.870s |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// fastest case, single handler, no argument. | |
var events = require('events'); | |
var emitter = new events.EventEmitter(); | |
emitter.on('foo', function() { | |
}); | |
for (var i = 0; i < 10E7; ++i) { | |
emitter.emit('foo'); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// faster case, single handler, two arguments. | |
var events = require('events'); | |
var emitter = new events.EventEmitter(); | |
emitter.on('foo', function(arg1, arg2) { | |
}); | |
for (var i = 0; i < 10E7; ++i) { | |
emitter.emit('foo', 'bar', 'baz'); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// slow case, two handlers. | |
var events = require('events'); | |
var emitter = new events.EventEmitter(); | |
emitter.on('foo', function() { | |
}); | |
emitter.on('foo', function() { | |
}); | |
for (var i = 0; i < 10E7; ++i) { | |
emitter.emit('foo'); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment