事件驱动
1.概念
node核心API构建用的是异步事件驱动架构,其中某些类型的对象又称触发器(emitter)
会触发命名事件来调用函数,又称监听器,所有能触发的事件对象都是EventEmitter类的实例
这些对象有一个 eventEmitter.on(函数)用于一个或这个多事件绑定到命名事件中
events模块 只提供了一个对象 events.EventEmitter,核心就是监听与触发
我们使用事件驱动 使用的是一个模块 events 他也是Node的核心模块
使用emit方法进行触发事件对象
2.参数使用
在事件中传递了参数,EvnentEmitter每个事件有一个事件名和若干个参数组成
事件名是一个字符串 表达一定的意思 见名之意,对于每一个事件 EventEmitter又支持若干个监听器
当事件触发时 注册到这个事件监听器依次被调用 事件参数作为回调参数使用
// 引入核心模块 events
const events = require('events');
// 实例化仅有的一个实例 得到一个对象
const event = new events.EventEmitter();
// 使用该对象进行绑定事件
// 绑定事件使用on方法 内置两个参数
// 第一个参数是事件的名字
// 第二个参数是回调函数 回调函数其实就是事件的行为
// 可以给回调函数传递参数 若干参数 因为这是一个自定义的函数
// event.on('I_LOVE_YOU',()=>{
// console.log('终于等到你');
// });
// 触发事件的时候 使用emit方法
// 内置参数若干 第一个参数是我们触发的事件名
// 从第二个参数开始 都是事件的参数 如果没有参数 那么emit方法内置一个参数 参数是事件的名字
// event.emit('I_LOVE_YOU');
// event.emit('I_LOVE_YOU');
// event.emit('I_LOVE_YOU');
// event.emit('I_LOVE_YOU');
// 传递事件参数
event.on('I_LOVE_YOU',(aName,bName)=>{
console.log(aName + '终于等到你' + bName);
});
event.emit('I_LOVE_YOU','Eric','Mary');
event.emit('I_LOVE_YOU','Jerry','Tom');
event.emit('I_LOVE_YOU','喜洋洋','灰太狼');