Node.js中许多对象都会触发事件:当一个文件被打工的时候fs.ReadStream被触发,当一个用户连接被建立的时候net.Server中的事件被触发,所有的对象的事件相关的方法继承自EventEmitter,可以通过require("events")来加载事件模块。
var EventEmitter = require('events');
如何让一个对象俱备事件相关的方法?
'use strict';
const util = require('util');
const EventEmitter = require('events');
function MyEventEmitter() {
// Initialize necessary properties from `EventEmitter` in this instance
EventEmitter.call(this);
}
// Inherit functions from `EventEmitter`'s prototype
util.inherits(MyEventEmitter, EventEmitter);
EventEmitter.defaultMaxListeners 默认最大监听数量
Event: 'removeListener' 当某监听者移除事件时触发
emitter.addListener(event, listener) 是emitter.on的别名
Event: 'newListener'增加事件监听者的时候触发
server.on('connection', function (stream) {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection'))); // [ [Function] ]
emitter.once(event, listener)
server.once('connection', function (stream) {
console.log('Ah, we have our first user!');
});