node(3):事件触发器

基础

Node.js 提供了使用 events 模块,此模块提供了 EventEmitter 类,用于处理事件。

初始化

const EventEmitter = require('events')
const eventEmitter = new EventEmitter()

事件对象公开了 on 和 emit 方法。

  • on 用于添加回调函数(会在事件被触发时执行)
  • emit 用于触发事件

vue中的父子组件传参应该就是基于这个对象,v-on:事件和emit(事件)

实例

const EventEmitter = require('events');
const em = new EventEmitter();

//自定义事件
em.on('sayName', (name) => {
    console.log(`name是:${name}`)
})

em.emit('sayName',"Node事件")

进阶

将参数和 this 传给监听器

const EventEmitter = require('events');
const em = new EventEmitter();

//自定义事件

em.on('sayName', (name) => {
    console.log(`name是:${name}`, this, this == em)
})

em.emit('sayName', "Node事件")

结果:name是:Node事件 {} false

em.on('sayName', function (name) {
    console.log(`name是:${name}`, this, this == em)
})

em.emit('sayName', "Node事件")

结果:name是:Node事件 EventEmitter {
_events: [Object: null prototype] { sayName: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
[Symbol(kCapture)]: false
} true

  • 当调用普通的监听器函数时,this 关键字会绑定到事件对象上。使用 ES6 箭头函数作为监听器,this不会被绑定到事件对象上

once()

on() 方法注册监听器时,每次触发命名事件时都会调用该监听器。once()方法,监听的事件只能够被触发一次,之后事件讲不会再被触发。用法与on()相同。

addListener

on方法的另一种写法

eventNames()

返回列出触发器已为其注册监听器的事件的数组。 数组中的值是字符串或 Symbol

getMaxListeners()

获取最大监听数

off(eventName, listener)
移除监听,同removeListener()

setMaxListeners(n)
设置最大监听数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无知的小菜鸡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值