node - 理解事件和回调

简介: node - 理解事件和回调

理解事件和回调


在Node.js应用中,事件无处不在。例如,net.Server会在每次有新连接时触发事件,fs.ReadStrem会在打开文件时触发事件,stream会在数据可读时触发事件。

在Node.js的事件机制中主要有三类角色:事件(event)、事件发射器(event Emitter)、事件监听器(Event Listener)


所有能触发事件的对象在Node.js中都是EventEmitter类的实例。这些对象有一个eventEmitter.on()函数,用于将一个或多个函数绑定到命名事件上。事件的命名通常是驼峰式的字符串。


当EventEmitter对象触发一个事件时,所有绑定在该事件上的函数都会被同步地调用

以下是一个简单的EventEmitter实例,绑定了一个事件监听器


const EventEmitter = require("events")
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter()
// 注册监听器
myEmitter.on("event", () => {
    console.log("触发事件")
)}
// 触发事件
myEmitter.emit("event")
复制代码


在上述例子中,EventEmitter()用于注册监听器,EventEmitter.emit()用于触发事件。其中,eventEmitter.on()是一个典型的异步编程模式,而且与回调函数密不可分,而回调函数就是后继传递风格的一种体现。后继传递风格是一种控制流通过参数传递的风格。简单来说就是把下一步要运行的代码封装成函数,通过参数传递的方式传给当前运行的函数。


所谓回调,就是"回头再调用"的意思。再上述例子中,myEmitter先注册了event事件,同时绑定了一个匿名的回调函数。该函数并不是立马执行,而是需要等到事件触发了以后再执行。

相关文章
|
4月前
|
存储 设计模式 监控
如何构建自定义 Node.js 事件发射器
如何构建自定义 Node.js 事件发射器
604 2
|
4月前
|
前端开发 JavaScript
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
|
4月前
|
JavaScript 前端开发 C++
如何构建自定义 Node.js 事件发射器
如何构建自定义 Node.js 事件发射器
55 2
|
Web App开发 存储 JavaScript
Node.js 事件循环和事件派发器
Node.js 事件循环和事件派发器
|
JavaScript 前端开发 API
Node内置模块 【Event事件模块】
Node内置模块 【Event事件模块】
146 0
|
设计模式 JavaScript 索引
Node.js精进(4)——事件触发器
Node.js精进(4)——事件触发器
|
JavaScript
【Node.JS】事件的绑定与触发
【Node.JS】事件的绑定与触发
106 0
【Node.JS】事件的绑定与触发
|
存储 缓存 JavaScript
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
|
设计模式 JavaScript API
Node.js 回调函数和事件循环
Node.js 回调函数和事件循环
|
移动开发 前端开发 JavaScript
Node.js系列四 - 深入事件循环
事件循环是什么?事实上我把事件循环理解成我们编写的JavaScript和浏览器或者Node之间的一个桥梁。 浏览器的事件循环是一个我们编写的JavaScript代码和浏览器API调用(setTimeout/AJAX/监听事件等)的一个桥梁, 桥梁之间他们通过回调函数进行沟通。 Node的事件循环是一个我们编写的JavaScript代码和系统调用(file system、network等)之间的一个桥梁, 桥梁之间他们通过回调函数进行沟通的.
115 1
Node.js系列四 - 深入事件循环