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

原文地址:https://www.cnblogs.com/weizhibin1996/p/9289155.html