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.

87 lines
2.5 KiB

## EventEmitter
Many objects in Node emit events: a TCP server emits an event each time
there is a stream, a child process emits an event when it exits. All
objects which emit events are instances of `events.EventEmitter`.
Events are represented by a camel-cased string. Here are some examples:
`'connection'`, `'data'`, `'messageBegin'`.
Functions can be then be attached to objects, to be executed when an event
is emitted. These functions are called _listeners_.
`require('events').EventEmitter` to access the `EventEmitter` class.
All EventEmitters emit the event `'newListener'` when new listeners are
added.
When an `EventEmitter` experiences an error, the typical action is to emit an
`'error'` event. Error events are special--if there is no handler for them
they will print a stack trace and exit the program.
### Event: 'newListener'
`function (event, listener) { }`
This event is emitted any time someone adds a new listener.
### Event: 'error'
`function (exception) { }`
If an error was encountered, then this event is emitted. This event is
special - when there are no listeners to receive the error Node will
terminate execution and display the exception's stack trace.
### emitter.on(event, listener)
Adds a listener to the end of the listeners array for the specified event.
server.on('connection', function (stream) {
console.log('someone connected!');
});
### emitter.once(event, listener)
Adds a **one time** listener for the event. The listener is
invoked only the first time the event is fired, after which
it is removed.
server.once('connection', function (stream) {
console.log('Ah, we have our first user!');
});
### emitter.removeListener(event, listener)
Remove a listener from the listener array for the specified event.
**Caution**: changes array indices in the listener array behind the listener.
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
### emitter.removeAllListeners(event)
Removes all listeners from the listener array for the specified event.
### emitter.listeners(event)
Returns an array of listeners for the specified event. This array can be
manipulated, e.g. to remove listeners.
server.on('connection', function (stream) {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection'));
// [ [Function] ]
### emitter.emit(event, [arg1], [arg2], [...])
Execute each of the listeners in order with the supplied arguments.