Node学习5-events模块
异步事件驱动架构
//这个变量名是 EventEmitter //注意是eventsssssssssss,不是event const EventEmitter = require('events'); //ES6 //继承EventEmitter class CustomEvent extends EventEmitter{ }; const ce = new CustomEvent(); //绑定监听函数 //函数名是test,内容是箭头函数 ce.on('test',()=>{ console.log('Hello World'); }); //定时器 //定时触发事件 setInterval(()=>{ ce.emit('test'); },1000);
移除相关的监听器
const ev = require('events'); //箭头函数是匿名函数 //要创建正式的函数必须这样 function fn1(){ console.log('fn1'); } function fn2(){ console.log('fn2'); } //看来变量名取ev也是可以的 class CustomEvent extends ev{}; const ce = new CustomEvent(); //一个test事件,可以绑定多个函数 ce.on('test',fn1); ce.on('test',fn2); //一般在函数作为参数的时候,才使用匿名函数 setInterval(()=>{ ce.emit('test'); },500); //设定在多少秒时候移除函数 setTimeout(()=>{ ce.removeListener('test',fn2); },1500);
处理错误函数
const ev = require('events'); class CustomEvent extends ev{}; const ce = new CustomEvent(); //绑定error事件 //我觉得这种匿名函数就很强,参数类型都不需要 ce.on('error',err=>{ console.log(err); }); setTimeout(()=>{ ce.emit('error',new Error('oop!')); },1000);
如果监听函数只使用一次,可以把on改成once