node.js之---事件驱动编程

详解事件驱动

事件驱动是基于什么实现的

事件驱动和I/O操作的关系

I/O操作和事件循环的关系

详解事件驱动

事件驱动编程(Event-driven Programming)是一种编程范式,其中程序的控制流是由"事件"驱动的。事件通常指的是用户操作、网络请求、定时器到期等事件。在 Node.js 中,这些事件由事件循环(Event Loop)和事件发射器(EventEmitter)模型进行管理。

在事件驱动编程中,程序不会直接按照顺序执行代码,而是等待事件的发生,并对这些事件作出反应。Node.js 的事件驱动模型利用了事件发射器(EventEmitter)来发布和监听事件,使得异步编程更加自然

事件驱动是基于什么实现的

EventEmitter 是 Node.js 中用于处理事件的核心模块。它是一个非常基础的类,几乎所有的 Node.js API 都基于它进行事件驱动的设计。EventEmitter 允许你在某个事件发生时触发回调函数。

会有章节进行详细描述该类,这里只做了解

事件驱动和I/O操作的关系

Node.js 通过非阻塞 I/O 模型来实现高效的事件驱动编程。当某个 I/O 操作(如读取文件、数据库查询或 HTTP 请求)开始时,Node.js 不会等待操作完成,而是继续执行程序中的其他任务。一旦 I/O 操作完成,相关的事件会被触发,执行相应的回调函数

I/O操作和事件循环的关系

Node.js 的事件驱动模型与异步 I/O 密切相关,异步 I/O 操作允许 Node.js 在等待操作完成时不阻塞其他任务。事件循环(Event Loop)负责调度事件和执行相应的回调。下面简要描述事件循环的工作原理:

  1. 初始化阶段:Node.js 启动并设置好事件循环。
  2. 执行阶段:Node.js 继续处理任务队列中的所有回调(如 I/O 事件的回调)。
  3. 事件触发阶段:当一个事件(如网络请求或文件读取)完成时,Node.js 会触发该事件的回调函数,并将它们放入任务队列。

由于 I/O 操作不需要阻塞,Node.js 可以高效地处理并发任务,而不需要多线程并发处理机制。每个请求的处理通过事件触发和回调机制来完成。

相关推荐
某哈压力大2 小时前
SSH 突然 Connection reset?不是密钥坏了,是 OpenSSL 把 sshd 干趴了
前端·node.js·命令行
回眸&啤酒鸭3 小时前
【回眸】Node.js 新手从零到一实战指南
node.js
浪遏10 小时前
recruitment-cli:让 AI 接手求职招聘,从架构到一次发送超时
架构·typescript·node.js
沉默小管2 天前
我用 NestJS + Nuxt 3 做了个导航站,聊几个踩过的坑
node.js·seo
非优秀程序员3 天前
第02章 杭电的英语老师与一台服务器|《互联网产品恩仇录》
数据库·node.js·代码规范
Hone3 天前
juejin-skills 系列 ②:我把「看掘金热榜」也做成了 Agent 技能
开源·node.js·ai编程
w16633 天前
零 Root 无 PC:我让 AI 在手机上把鸿蒙 HDC 协议的底裤扒了下来
node.js
严肃小白兔4 天前
TanStack Router 更新构建工具链:Node.js 兼容性、路由分割与前端工程实践
前端·node.js·状态模式
一缕82年的清风5 天前
用了 3 年 Notion 和 Obsidian 后,为什么我最终把所有身家搬到了思源笔记?
node.js
Dumbness5 天前
一份 JSON 生成增删改查接口,入参清洗漏了什么:Number(" ") 是 0,搜 100% 把 1000 元券也搜出来
node.js·express