You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					58 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					58 lines
				
				1.2 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var inherits = require('inherits')
							 | 
						||
| 
								 | 
							
								  , EventTarget = require('./eventtarget')
							 | 
						||
| 
								 | 
							
								  ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function EventEmitter() {
							 | 
						||
| 
								 | 
							
								  EventTarget.call(this);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								inherits(EventEmitter, EventTarget);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EventEmitter.prototype.removeAllListeners = function(type) {
							 | 
						||
| 
								 | 
							
								  if (type) {
							 | 
						||
| 
								 | 
							
								    delete this._listeners[type];
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this._listeners = {};
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EventEmitter.prototype.once = function(type, listener) {
							 | 
						||
| 
								 | 
							
								  var self = this
							 | 
						||
| 
								 | 
							
								    , fired = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function g() {
							 | 
						||
| 
								 | 
							
								    self.removeListener(type, g);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!fired) {
							 | 
						||
| 
								 | 
							
								      fired = true;
							 | 
						||
| 
								 | 
							
								      listener.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.on(type, g);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EventEmitter.prototype.emit = function() {
							 | 
						||
| 
								 | 
							
								  var type = arguments[0];
							 | 
						||
| 
								 | 
							
								  var listeners = this._listeners[type];
							 | 
						||
| 
								 | 
							
								  if (!listeners) {
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  // equivalent of Array.prototype.slice.call(arguments, 1);
							 | 
						||
| 
								 | 
							
								  var l = arguments.length;
							 | 
						||
| 
								 | 
							
								  var args = new Array(l - 1);
							 | 
						||
| 
								 | 
							
								  for (var ai = 1; ai < l; ai++) {
							 | 
						||
| 
								 | 
							
								    args[ai - 1] = arguments[ai];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < listeners.length; i++) {
							 | 
						||
| 
								 | 
							
								    listeners[i].apply(this, args);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EventEmitter.prototype.on = EventEmitter.prototype.addListener = EventTarget.prototype.addEventListener;
							 | 
						||
| 
								 | 
							
								EventEmitter.prototype.removeListener = EventTarget.prototype.removeEventListener;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports.EventEmitter = EventEmitter;
							 |