Node学习记录:事件

发布时间:2019-07-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Node学习记录:事件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

github

文章所有代码戳这里可以找到

Events

Events 是 Node.js 中一个非常重要的 core 模块, 在 node 中有许多重要的 core API 都是依赖其建立的. 比如 Stream 是基于 Events 实现的, 而 fs, net, http 等模块都依赖 Stream, 所以 Events 模块的重要性可见一斑.

通过继承 EventEmitter 来使得一个类具有 node 提供的基本的 event 方法, 这样的对象可以称作 emitter, 而触发(emit)事件的 cb 则称作 listener. 与前端 DOM 树上的事件并不相同, emitter 的触发不存在冒泡, 逐层捕获等事件行为, 也没有处理事件传递的方法.

Node学习记录:事件

这里我们自定义了事件event(它也可以叫其他的名字)用来触发摸摸谁的头

常见面试问题

Eventemitter 的 emit 是同步还是异步?

Node.js 中 Eventemitter 的 emit 是同步的. 在官方文档中有说明:

The EventListener calls all listeners synchronously in the order in which they were registered. This is important to ensure the proper sequencing of events and to avoid race conditions or logic errors.

下面的代码 ,先输出 hi 1 还是 hi 2?

Node学习记录:事件

Node学习记录:事件

如下情况是否会死循环?

Node学习记录:事件

Node学习记录:事件

Node学习记录:事件

以及这样会不会死循环?

const EventEmitter = require('events');

let emitter = new EventEmitter();

emitter.on('myEvent', function sth () {
  emitter.on('myEvent', sth);
  console.log('hi');
});

emitter.emit('myEvent');

Node学习记录:事件

对于一个事件是否有最大侦听器数量的限制?

默认情况下,如果事件有操作10个侦听器,它会发出警告。不过,可以使用emitter.setMaxListener(n)来更改这个数量

是否可以侦听所有发送出来的事件?

不能。我们需要给每个想要响应的事件创建侦听器

基本的事件监听模式

Node.js重点事件更常见的是网络事件,包括:

1.来自web服务器的响应
2.从文件读取数据
3.从数据库返回数据

Events模块addListener/on,once,removeListener,removeAllListeners,emit等基本的事件监听模式的方法实现。它与前端DOM树上的事件并不相同,因为它不存在冒泡,逐层捕获等属于DOM的事件行为,也没有preventDefault()、stopPropagation()、 stopImmediatePropagation() 等处理事件传递的方法。

1.类: events.EventEmitter:通过 require('events').EventEmitter 获取 EventEmitter 类。
2.emitter.on(event, listener):添加一个 listener 至特定事件的 listener 数组尾部。 返回 emitter,方便链式调用,下同。 

3.emitter.removeListener(event, listener)从一个事件的 listener 数组中删除一个 listener 

4.emitter.listeners(event)返回指定事件的 listener 数组 

更多详情见:Node.js API 文档

以下代码展示了一条能在5秒内自我毁灭的机密消息:

Node学习记录:事件

Node学习记录:事件

在这段脚本中,发送了两个事件,有两个侦听器。当脚本运行时,消息事件就发生,并由“message”处理器处理

在Node.js中到处都用EventEmitter,所以掌握它是很重要的。Node.js通过I/O操作获得的数据并广泛使用Events模块来支持异步编程

参考

Node.js知识点详解(二)HTTP模块与事件模块
Node.js Interview
JavaScript 运行机制详解:再谈Event Loop
前端基础进阶(十二):深入核心,详解事件循环机制

脚本宝典总结

以上是脚本宝典为你收集整理的Node学习记录:事件全部内容,希望文章能够帮你解决Node学习记录:事件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: