技术分享:NodeJS中的Events(事件触发器)讲解
在 Node.js 中,Event是非常核心的模块,大部分的核心模块基本上都有用到或者继承了该模块。
Event模块和我们之前在Javascript中学习的EventTarget接口很类似。对于该模块我们能做的不仅仅是简单的使用还可以在该模块的基础上做出扩展,你想想JS中的onclick、onmousemove
不罗嗦,直接上代码!
因为事件模块属于比较抽象的东西,所以不太适合用大篇幅的语言来描述它,所以我决定直接上代码,先实现功能看效果再说。下面就一起来体验下这个模块的功能吧。
对自定义类进行扩展
在前端我们可以对一个元素进行事件的监听,例如
这种做法实际上就是在对待页面中的DOM对象添加事件监听,在Node.js中是无法直接为一个对象添加事件监听的,因为我们自定义的类或者对象都是没有实现或继承 Events 模块的。
想要使用 Events 模块就需要先导入该模块。
接下来就是具体代码的实现:
以上的代码就是为了扩展咱们自定义类的。
在以上代码中我们使用了event模块中的两个方法:on(),emit()。 这两个方法分别是为了 注册事件与 触发事件的。
在event模块中比较有用的方法远远不止这两个,下面列出几个较为常用的方法。
on():注册事件,添加被监听的事件名称到监听器数组的末尾。
addListener():同上。
off():移除事件,从监听器数组移除被监听的事件名称。
removeListener():同上。
eventNames():返回已注册监听器的事件名数组。 数组中的值为字符串或 Symbol。
Tips:
因为事件的概念较为抽象,所以我们大部开发者并不是很喜欢使用Events模块实现监听,更多的时候我们可能更加喜欢以回调函数的方式的完成对某个函数或者方法的监听。
所以我们对 Events 模块的学习其实并不仅仅是为了将来能在开发中为自定义类添加事件,更多的其实为了对 Node.js 的知识点整体架构有一定的了解,了解知识点的来龙去脉。
学习了 Events 之后我们也就可以明白为什么之后学习的很多的核心模块为什么都会有 on() 和 off() 方法,因为它们都是继承了 Events 模块的。
希望本篇文章能够对想要零基础学习Java知识的你有所帮助。
本文来自千锋教育,转载请注明出处。
技术分享:NodeJS中的Events(事件触发器)讲解相关推荐
- SystemVerilog中的Events事件
文章目录 前言 一.事件(Events) 二.@操作符和wait()操作的区别 三.wait_order 总结 前言 本文首先介绍SystemVerilog中的Events:其次记录了@操作符和wai ...
- 技术分享 | MySQL中MGR中SECONDARY节点磁盘满,导致mysqld进程被OOM Killed
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 在MGR测试中,人为制造磁盘满问题后,节点被oom killed 问题描述 在对 ...
- 技术分享 | 接口测试中,请求超时该怎么办?
原文链接 A 发送请求,然后等待 B 的响应,同时开始超时计时,如果在超时时间内成功接收到响应,则结束等待和计时.如果到了超时时间还没有接收到响应,则结束等待同时此次通讯失败,这个过程叫做请求超时.在 ...
- bcp 不能调用where 子句_技术分享 || Mysql中IS NULL、IS NOT NULL不能走索引?
mysql中IS NULL.IS NOT NULL不能走索引? 不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL.IS NOT NULL.!=.like ...
- 技术分享 oracle中fm的作用
SQL> select '|'||to_char(5,'999')||'|' from dual; 结果为:| 5| SQL> select '|'||to_char(5,'000')|| ...
- 技术分享 | 吊舱目标追踪---deepsort原理讲解
一.多目标追踪的主要步骤 获取原始视频帧 利用目标检测器对视频帧中的目标进行检测 将检测到的目标的框中的特征提取出来,该特征包括表观特征(方便特征对比避免ID switch)和运动特征(运动特征方便卡 ...
- 一个研发团队是如何坚持7年技术分享的?
--"所有分享都是有意义的" --"在PingCode,人人都可以成为分享者" 这是PingCode研发团队的分享精神,而这样的精神,在过去7年中已经闪耀了10 ...
- 2018.09.22 上海大学技术分享 - An Introduction To Go Programming Language
老实说笔者学习 Go 的时间并不长,积淀也不深厚,这次因缘巧合,同组的同事以前是上海大学的开源社区推动者之一,同时我们也抱着部分宣传公司和技术分享的意图,更进一步的,也是对所学做一个总结,所以拟定了这 ...
- 我是如何做技术分享的 ?
1. 前言 一直想在 2021 年给大家做一期分享,以解决咱们客户端团队分享频次多,但质量上还有些参差不齐的问题,名字就叫:如何做一个优秀的技术分享? 于是我回顾了一下我过去的分享,大大小小分享了 3 ...
最新文章
- 总结2021面试中的常见14种算法套路
- python 去掉字符串的
- ABAP术语-Object Name
- pyqt制作电子钟表
- HTML布局篇之双飞翼(圣杯)布局
- Python多线程——LOCK锁
- equals 和 hashCode 到底有什么联系?一文告诉你
- delve 调试带参数_带你学够浪:Go语言基础系列-环境配置和 Hello world
- java 变位词,[Java教程]变位词的查找(下)
- POI的word表格居中
- Frank计算机基础硬件笔记
- vivo手机支持html,vivo5G手机如何设置5G?教你开启SA模式
- JavaWeb 注解
- 实现出现异常可重复执行的线程池-自定义标签(2)
- 使用List和Map遇到得空指针异常
- 360wifi驱动linux驱动安装,360WiFi驱动安装使用教程,详细图文版
- 批量启用AD中账户的Exchange邮箱
- Excel中倒排数据
- win安装夜神安卓模拟器
- IP-Prefix List
热门文章
- 浅谈 翻硬币游戏【Nim博弈】
- Pycharm-列出代码结构
- 电脑声音推送到手机话筒_一台电脑是不是就能做在线教育直播了?
- 跑monkey需要安装什么_安装隔音吊顶需要注意什么 隔音吊顶材料推荐
- log4j监控mybatis的普通配置
- Spring管理Bean的生命周期
- 项目中提示找不到sun.misc.BASE64Encoder
- 性能测试——房屋租赁系统(Badboy、JMeter)
- Element UI——滚动条组件(ElScrollBar)修改.el-scrollbar__wrap和el-scrollbar__view的CSS属性
- MAC + Tomcat——部署Web项目时Tomcat启动成功,但部署的Web项目404错误