github文章所有代码都可以在这里找到EventsEvents是Node.js中非常重要的核心模块,node中很多重要的核心API都是建立在它之上的。比如Stream是基于Events实现的,而fs、net、http等模块都依赖于Stream,可见Events模块的重要性。通过继承EventEmitter,一个类就拥有了node提供的基本事件方法。这样的对象可以称为发射器,而触发(emit)事件的cb称为监听器。它不同于前端DOM树上的事件。发射器的触发器没有冒泡、逐层捕获等事件行为,也没有处理事件传递的方法。这里我们自定义了event事件(也可以叫别的名字)用来触发谁的头被碰了。常见的面试问题。Eventemitter的emit是同步的还是异步的?Node.js中Eventemitter的emit是同步的。官方文档中是这样解释的:EventListener按照注册的先后顺序同步调用所有的监听器。这对于确保事件的正确排序并避免竞争条件或逻辑错误很重要。在下面的代码中,先输出hi1还是hi2?下面的情况会不会造成死循环??这会是一个无限循环吗?;console.log('hi');});emitter.emit('myEvent');事件是否有最大听众数?默认情况下,如果事件有action10侦听器,它会发出警告。但是,您可以使用emitter.setMaxListener(n)来更改此数字。是否可以收听所有发出的事件?不能。我们需要为每个要响应的事件创建一个监听器。基本事件监听方式Node.js关键事件是比较常见的网络事件,包括:1.来自web服务器的响应2.从文件中读取数据3.从数据库返回数据事件模块addListener/on,once,removeListener,removeAllListeners,emitand其他基本的事件监控模式。它和前端DOM树上的事件不一样,因为它没有冒泡、逐层捕获等DOM事件行为,也没有preventDefault()、stopPropagation()、stopImmediatePropagation()和其他处理事件传递的方法。1、类:events.EventEmitter:通过require('events').EventEmitter获取EventEmitter类。2.emitter.on(event,listener):在特定事件的监听器数组末尾添加一个监听器。returnemitter,方便链式调用,下同。3.emitter.removeListener(event,listener)从一个事件的监听器数组中移除一个监听器4.emitter.listeners(event)返回指定事件的监听器数组更多细节参见:Node.jsAPI文档如下代码显示一个在5秒内自毁的函数机密消息:在这个脚本中,发送了两个事件,有两个侦听器。消息事件在脚本运行时发生,并由“消息”处理程序处理。EventEmitter在Node.js中无处不在,所以掌握它很重要。Node.js通过I/O操作获取数据,大量使用Events模块支持异步编程。参考Node.js知识点详解(二)HTTP模块与Event模块Node.js面试JavaScript运行机制详解:浅谈EventLoop前端基础进展步骤(十二):深入核心,详解事件循环详细机制
