博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nodejs API - events 提纲式笔记
阅读量:7249 次
发布时间:2019-06-29

本文共 1577 字,大约阅读时间需要 5 分钟。

根据 文档对events模块下的事件和方法做了一次分类,方便日后快速对号入座

使用事件模块

const events = require('events');

实例化事件

const myEvent = new events.EventEmittor()myEvent.on('myClick',()=>{    // ...    // 注意箭头函数的 this 不指向 EventEmitter实例 → ‘myEvent’    // 声明式函数的 this 指向 EventEmitter实例 → ‘myEvent’})复制代码

注册监听与触发事件

  • emitter.on(eventName, listener)
    eventName事件注册监听器(可调用多次)
  • emitter.once(eventName, listener)
    eventName事件注册监听器(只能调用一次)
  • emitter.emit(eventName[, ...args])
    触发事件,并可以同时传递参数
  • emitter.addListener(eventName, listener)
    on事件的别名

移除事件监听

注意:移除前会被调用一次

  • emitter.removeAllListeners([eventName])
    移除事件名为 eventName的所有监听器
  • emitter.removeListener(eventName, listener)
    移除事件名为 eventNamelistener监听器

添加listenerevnetName监听器数组的开头

  • 多次调用并传入相同的 eventNamelistener 会导致 listener 被添加与调用多次。
  • emitter.prependOnceListener(eventName, listener)
    下次触发 eventName 事件时,监听器会被移除,然后调用

获取事件监听器的集合与数量

  • emitter.eventNames()
    返回一个列出触发器已注册监听器的事件的数组
  • emitter.listeners(eventName)
    返回名为 eventName 的事件的监听器数组的副本
  • emitter.listenerCount(eventName)
    返回正在监听名为 eventName 的事件的监听器的数量

设置事件可以注册的监听器数量

  • EventEmitter.defaultMaxListeners
    设置所有实例的默认监听器数量
  • emitter.setMaxListeners(n)
    设置单个实例的监听器数量
  • emitter.getMaxListeners()
    返回 EventEmitter 当前的最大监听器限制值

newListener 事件

实例会在一个监听器被添加到其内部监听器数组之前触发自身的 newListener 事件。 newListener 回调函数中, 一个监听器的名字如果和已有监听器名称相同, 则在被插入到 EventEmitter 实例的内部监听器数组时, 该监听器会被添加到其它同名监听器的前面

removeListener 事件

在 listener 被移除后触发。

error 事件

EventEmitter 实例中发生错误时,会触发一个 error 事件

// 作为最佳实践,应该始终为 'error' 事件注册监听器。const myEmitter = new MyEmitter();myEmitter.on('error', (err) => {  console.error('有错误');});myEmitter.emit('error', new Error('whoops!'));// 打印: 有错误复制代码

转载地址:http://qahbm.baihongyu.com/

你可能感兴趣的文章
CSS代码重构与优化之路
查看>>
使用 sigprocmask 和 sigpending 在程序正文中捕获和处理信号
查看>>
Bodymovin插件的使用
查看>>
详细深入分析 Java ClassLoader 工作机制
查看>>
关于设计模式
查看>>
对一个“老”架构的重新思考
查看>>
DoubanFMPlayer, A mimic of Douban.fm player
查看>>
埃森哲、亚马逊和万事达卡抱团推出的区块链项目有何神通?
查看>>
2019年自动驾驶5大趋势预测:第一台Level 5 无人车问世
查看>>
后APP时代的破局之路 :阿里技术“三大容器五大方案”亮相,百川开放全面升级...
查看>>
工欲善其事-必先利其器之终端
查看>>
64位的Mac OS X也有Windows.Forms了
查看>>
立下“去O”Flag的AWS,悄悄修炼了哪些内功?
查看>>
Better Software East/DevOps East/Agile Dev East 2016大会上的教程介绍
查看>>
优酷在多模态内容理解上的研究及应用
查看>>
JavaScript学习笔记整理:对象篇
查看>>
GitHub的bug赏金计划升级:奖金提高到3万美元以上
查看>>
中国法院裁定:禁售部分型号苹果手机
查看>>
使用实体框架、Dapper和Chain的仓储模式实现策略
查看>>
HTTP/2推送之难,远超想象
查看>>