Browse Source

Add EventEmitter.prototype.once

v0.7.4-release
Peteris Krumins 14 years ago
committed by Ryan Dahl
parent
commit
a6ee3bac85
  1. 8
      lib/events.js
  2. 20
      test/simple/test-event-emitter-once.js

8
lib/events.js

@ -76,6 +76,14 @@ EventEmitter.prototype.addListener = function (type, listener) {
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.once = function (type, listener) {
var self = this;
self.on(type, function g () {
self.removeListener(type, g);
listener.apply(this, arguments);
});
};
EventEmitter.prototype.removeListener = function (type, listener) {
if ('function' !== typeof listener) {
throw new Error('removeListener only takes instances of Function');

20
test/simple/test-event-emitter-once.js

@ -0,0 +1,20 @@
common = require("../common");
assert = common.assert
var events = require('events');
var e = new events.EventEmitter();
var times_hello_emited = 0;
e.once("hello", function (a, b) {
times_hello_emited++;
});
e.emit("hello", "a", "b");
e.emit("hello", "a", "b");
e.emit("hello", "a", "b");
e.emit("hello", "a", "b");
process.addListener("exit", function () {
assert.equal(1, times_hello_emited);
});
Loading…
Cancel
Save