当前位置: 首页 > news >正文

理论-同步、异步、阻塞、非阻塞

页面js(阻塞(等待文件读取函数执行完成)和非阻塞(不等待文件读取函数执行完成));文件读取(同步(不会立即返回,需等待读取操作完成才返回)和异步(会立即返回并在文件读取完成后执行回调函数));

在异步非阻塞的情况下,可以使用 Node.js 中的文件读取操作来展示。在 Node.js 中,可以使用回调函数或者 Promise 来实现异步非阻塞的文件读取操作。以下是使用回调函数的例子:

const fs = require('fs');// 异步非阻塞的文件读取操作,使用回调函数
fs.readFile('file.txt', 'utf8', (err, data) => {if (err) throw err;console.log(data);
});
console.log('异步非阻塞文件读取操作完成');

在这个例子中,fs.readFile 是一个异步非阻塞的文件读取操作。在调用 fs.readFile 后,JavaScript 代码会继续执行后续的操作,而不必等待文件读取完成。当文件读取完成后,回调函数会被调用并处理文件数据。这种方式下,文件读取的操作是异步的,不会阻塞后续代码的执行。

另外,使用 Promise 也可以实现异步非阻塞的文件读取操作,下面是一个使用 Promise 的例子:

const fs = require('fs').promises;// 异步非阻塞的文件读取操作,使用 Promise
fs.readFile('file.txt', 'utf8').then(data => {console.log(data);}).catch(err => {console.error(err);});
console.log('异步非阻塞文件读取操作完成');

在这个例子中,fs.promises.readFile 返回一个 Promise 对象,使得文件读取操作变为异步非阻塞的。当文件读取完成后,Promise 的 then 方法会被调用来处理文件数据,而不会阻塞后续代码的执行。

这些例子展示了异步非阻塞的情况:文件读取操作是异步的,并且在读取文件的同时不会阻塞后续代码的执行。

相关文章:

  • tomcat 文件上传 (CVE-2017-12615)
  • 碳性电池和碱性电池的区别
  • Matlab 软件入门
  • Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架。它是 Spring 项目家族的一员,用于构建安全的 Java 应用程序。
  • 并发编程---线程与进程
  • ARM点灯---看手册
  • 几种常见点云开源库——点云、网格数据结构转换
  • Python使用总结之py-docx将word文件中的图片保存,并将内容返回
  • 前端项目依赖包中的依赖包漏洞解决方案
  • Python的包管理工具pip安装
  • 不可思议的转折,这部韩剧在口碑上实现逆袭
  • 15.面试算法-树基础
  • 统信服务器操作系统进入【单用户模式】
  • TM-align结果的PDB ID和链ID
  • LeetCode - 850 矩形面积 II
  • [译]前端离线指南(上)
  • Android Volley源码解析
  • es6要点
  • jQuery(一)
  • js ES6 求数组的交集,并集,还有差集
  • JS变量作用域
  • SpingCloudBus整合RabbitMQ
  • windows下使用nginx调试简介
  • 分享一份非常强势的Android面试题
  • 工作手记之html2canvas使用概述
  • 实习面试笔记
  • 使用Gradle第一次构建Java程序
  • 通过git安装npm私有模块
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 一个项目push到多个远程Git仓库
  • 智能网联汽车信息安全
  • 仓管云——企业云erp功能有哪些?
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • # wps必须要登录激活才能使用吗?
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Note)C++中的继承方式
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (七)c52学习之旅-中断
  • (七)Knockout 创建自定义绑定
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core 的缓存方案
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Framework 3.5安装教程
  • .NET 快速重构概要1
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .net生成的类,跨工程调用显示注释
  • :class的用法及应用
  • @RunWith注解作用