* main.js
const events = require("events");
var process = require("process");
var eventEmitter = new events.EventEmitter();
eventEmitter.on("connect", function() {
console.log("连接成功");
eventEmitter.emit("data");
});
eventEmitter.on("data", function() {
console.log("数据接收成功");
});
eventEmitter.on("close", function() {
console.log("连接断开");
});
process.on("exit", function() {
eventEmitter.emit("close");
console.log("程序执行完了");
});
eventEmitter.emit("connect");
$ node main.js
连接成功
数据接收成功
连接断开
程序执行完了
继承 EventEmitter
大多数时候我们不会直接使用 EventEmitter,而是在对象中继承它。包括 fs、net、 http 在内的,只要是支持事件响应的核心模块都是 EventEmitter 的子类。
1.具有某个实体功能的对象实现事件符合语义, 事件的监听和发生应该是一个对象的方法。
2.JavaScript 的对象机制是基于原型的,支持 部分多重继承,继承 EventEmitter 不会打乱对象原有的继承关系。