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事件,同时绑定了一个匿名的回调函数。该函数并不是立马执行,而是需要等到事件触发了以后再执行。

相关文章
|
21天前
|
JavaScript 前端开发 开发者
掌握Node.js中的异步编程:从回调到async/await
Node.js的异步编程模型是其核心特性之一,它使得开发者能够构建高性能和高并发的应用程序。本文将带你从Node.js的异步编程基础开始,逐步深入到回调函数、Promises、以及最新的async/await语法。我们将探讨这些异步模式的原理、使用场景和最佳实践,并通过实例代码展示如何在实际项目中应用这些概念。
|
2月前
|
存储 前端开发 JavaScript
node中循环异步的问题[‘解决方案‘]_源于map循环和for循环对异步事件配合async、await的支持
本文探讨了在Node.js中处理循环异步操作的问题,比较了使用map和for循环结合async/await处理异步事件的差异,并提供了解决方案。
32 0
|
6月前
|
存储 设计模式 监控
如何构建自定义 Node.js 事件发射器
如何构建自定义 Node.js 事件发射器
616 2
|
6月前
|
前端开发 JavaScript
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
|
6月前
|
JavaScript 前端开发 C++
如何构建自定义 Node.js 事件发射器
如何构建自定义 Node.js 事件发射器
65 2
|
Web App开发 存储 JavaScript
Node.js 事件循环和事件派发器
Node.js 事件循环和事件派发器
|
JavaScript 前端开发 API
Node内置模块 【Event事件模块】
Node内置模块 【Event事件模块】
153 0
|
设计模式 JavaScript 索引
Node.js精进(4)——事件触发器
Node.js精进(4)——事件触发器
|
JavaScript
【Node.JS】事件的绑定与触发
【Node.JS】事件的绑定与触发
113 0
【Node.JS】事件的绑定与触发
|
存储 缓存 JavaScript
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战