异步事件驱动架构
//这个变量名是 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