Node.js  事件循环详解及实例

发布时间 - 2026-01-11 02:39:48    点击率:

 Node.js  事件循环详解及实例

  • Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。
  • Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。
  • Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。
  • Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.

Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();

// 创建事件处理程序
var connectHandler = function connected() {
  console.log(1);

  // 触发 data_received 事件 
  eventEmitter.emit('data_received');
}

// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);

// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
  console.log(2);
});

// 触发 connection 事件 
eventEmitter.emit('connection');

console.log(3);

在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。

var fs = require("fs")
fs.readFile('input.txt',function(err,data){
if(err)
  console.log(err)
else
  console.log(data.toString())
})
console.log("程序执行完成")

如有疑问,请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Node.js  # 事件循环  # 事件循环实例  # node.js中对Event Loop事件循环的理解与应用实例分析  # 深入浅析Node.js 事件循环、定时器和process.nextTick()  # 实例分析JS与Node.js中的事件循环  # 深入理解Node.js 事件循环和回调函数  # 深入浅析Node.js 事件循环  # Node.js事件循环(Event Loop)和线程池详解  # 小结Node.js中非阻塞IO和事件循环  # 我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环  # 详解node.js 事件循环  # 回调  # 都是  # 绑定  # 单线程  # 应用程序  # 第一个  # 多个  # 如有  # 我们可以  # 希望能  # 作为一个  # 谢谢大家  # events  # nbsp  # Node  # pre  # strong  # EventEmitter  # ul  # API 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  如何在云主机上快速搭建网站?  如何为不同团队 ID 动态生成多个“认领值班”按钮  常州企业网站制作公司,全国继续教育网怎么登录?  如何基于云服务器快速搭建网站及云盘系统?  Python文本处理实践_日志清洗解析【指导】  如何在宝塔面板创建新站点?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  微信推文制作网站有哪些,怎么做微信推文,急?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何快速搭建高效可靠的建站解决方案?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel storage目录权限问题_Laravel文件写入权限设置  如何获取上海专业网站定制建站电话?  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  EditPlus中的正则表达式 实战(2)  如何用虚拟主机快速搭建网站?详细步骤解析  网站制作价目表怎么做,珍爱网婚介费用多少?  在Oracle关闭情况下如何修改spfile的参数  高防服务器租用如何选择配置与防御等级?  如何快速上传自定义模板至建站之星?  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  JavaScript如何实现继承_有哪些常用方法  免费视频制作网站,更新又快又好的免费电影网站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel如何使用Blade模板引擎?(完整语法和示例)  如何在Windows 2008云服务器安全搭建网站?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel如何与Inertia.js和Vue/React构建现代单页应用  linux写shell需要注意的问题(必看)  SQL查询语句优化的实用方法总结  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  利用JavaScript实现拖拽改变元素大小