11.事件驱动events

事件驱动events ==> events.EventEmitter, EventEmitter 的核心就是事件发射与事件监听器功能的封装
更详细的 API 文档参见 http://nodejs.org/api/events.html。

var events = require("events");
var emitter = new events.EventEmitter();
emitter.on("someEvent", function(arg1, arg2){
    console.log("listener1", arg1, arg2);
});

emitter.on("someEvent", function(arg1, arg2){
    console.log("listener2", arg1, arg2);
});
emitter.emit("someEvent", "byvoid", 1991);

// 运行的结果是: 
// listener1 byvoid 1991 
// listener2 byvoid 1991
// emitter  为事件  someEvent 注册了两个事件监听器,然后发射了 someEvent事件。运行结果中可以看到两个事件监听器回调函数被先后调用

1.EventEmitter.on(event, listener) ==> 为指定事件注册一个监听器, 接受一个字符串event和一个回调函数listener
2.EventEmitter.emit(event, [arg1], [arg2], [...]) ==> 发射 event 事件,传递若干可选参数到事件监听器的参数表。
3.EventEmitter.once(event, listener) ==> 单次监听器, 只触发一次
4.EventEmitter.removeListener(event, listener) 移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器。
5.EventEmitter.removeAllListeners([event]) ==> 移除所有事件的所有监听器,如果指定 event ,则移除指定事件的所有监听器。
6.error事件 ==> 我们一般要为会发射error事件的对象设置监听器,避免遇到错误后整个程序崩溃。

var  events = require('events'); 
var  emitter =  new  events.EventEmitter(); 
emitter.emit('error'); 
运行时会显示以下错误: 
node.js:201 
throw e; // process.nextTick error, or 'error' event on first tick 

7.继承EventEmitter
大多数时候我们不会直接使用EventEmitter, 而是在对象中继承它, 包括fs, net, http在内, 只要是支持事件响应的核心模块都是EventEmitter的子类

原文地址:https://www.cnblogs.com/alantao/p/7966173.html