NodeJs内置模块二:Events模块

Node.js中的Events模块

一、 Node中的核心API都是基于异步事件驱动的

  • 在这个概念中,其实就是某些对象(Emitters类发射器)发出一个事件;
  • 在某一地方我们就可以监听(Listenters监听器)这个时间,也以叫订阅这个事件,并且传入相应的回调函数,在见监听到这个时间的时间就会自动执行该回调函数

二、发出和监听事件都是通过EventEmitter类来完成

  • 这个类就是属于Events对象;
  • const emitter = new EventEmitter(),实例化这个类
  • emitter.on(eventName,listenter):用于监听事件,也可以使用addListener;
  • emiter.off(eventName,listenter):用于移除监听事件,也可以使用removeListener;
  • emitter.emit(eventName,[…args]) :发出事件,可以携带参数
//引入events
const EventEmitter = require('events')
const emitter = new EventEmitter();//实例化
//监听事件
emitter.on('我曹', () => {
  console.log(`output->`, '我监听到了')
})
//发射事件
emitter.emit('我曹');//先订阅在发射,才能监听到
setTimeout(() => {
  emitter.emit('我曹')
}, 2000)
  • 事件取消
//引入events
const EventEmitter = require('events')
const emitter = new EventEmitter();//实例化
function Listenter () {
  console.log(`output->`, '我监听到了')
}
//监听事件
emitter.on('我曹', Listenter)
//发射事件
emitter.emit('我曹')
//取消事件
emitter.off('我曹', Listenter)
emitter.emit('我曹')//此时再出发没用了,因为已经调用了Off

三、其他常见的方法

  • emitter.eventNames(),返回当前EventsEmiter的所有监听事件的事件名数组
  • emitter.getMaxListeners():返回当前 EventEmitter对象的最大监听器数量,可以通过setMaxListeners()来修改,默认是10
  • emitter.listenerCount(事件名称):返回当前 EventEmitter对象个事件名称的监听器个数
  • emitter.listeners(事件名称):返回当前 EventEmitter对象某个事件监听器上所有的回调函数的数组;
console.log(emitter.eventNames())//返回该emitter监听的事件名称的数组[ 'event1', 'event2' ]
console.log(emitter.getMaxListeners())//返回最大的监听个数
console.log(emitter.listenerCount('5555'))//返回事件5555的监听个数
console.log(emitter.listeners('5555'))//返回监听到事件5555要执行的回调函数数组[ [Function: Listenter], [Function: Listenter] ]

四、EventEmitter实例方法的其他补充

  • emitter.once(eventName, listener):事件监听一次
  • emitter.prependListener():将监听事件添加到最前面
  • emitter.prependOnceListener():将监听事件添加到最前面,但是只监听一次
  • emitter.removeAllListeners([eventName]):移除所有的监听器
    image.png

五、Node.Js发布订阅者模式,架构图

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北北往前飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值