events模块
-
events.EventEmitter是该模块唯一的对象
-
EventEmitter 的核心就是事件触发与事件监听器功能的封装
-
下面介绍几个常见的APi:
-
on(event,listener):event[String] listener:事件监听函数
-
emit(event,…agr1):event[String]事件名字
-
once(event, listener) 为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听器
-
removeListener(event, listener) 移除指定事件的某个监听器,listener 必须是该事件已经注册过的监听器。
-
removeAllListeners([event]) 如果没有指定就删除所有的事件和监听器
下面是是示例代码:
const events=require('events'); const event1=new events.EventEmitter(); event1.on('say',(msg)=>{ console.log(msg); }); event1.once('jump',(msg)=>{ console.log('我跳楼了'); }); event1.emit('say','hello,world'); let timer=null; timer=setInterval(()=>{ event1.emit('jump'); },1000); setTimeout(()=>{ clearInterval(timer); },2000);
error机制
-
EventEmitter 定义了一个特殊的事件 error ,它包含了“错误”的语义,我们在遇到异常的时候通常会发射 error 事件。当 error 被发射时, EventEmitter 规定如果没有响应的监听器,Node.js 会把它当作异常,退出程序并打印调用栈。 我们一般要为会发射 error 事件的对象设置监听器,避免遇到错误后整个程序崩溃
const events = require('events');
let emitter = new events.EventEmitter();
emitter.emit('error');