目录
如何理解NodeJs的非阻塞I/O
结束语
首页 web前端 js教程 深入解析Node.js中的非阻塞I/O

深入解析Node.js中的非阻塞I/O

Nov 03, 2021 am 09:59 AM
node.js 非阻塞i/o

本篇文章带大家了解一下Node.js中的非阻塞I/O,希望对大家有所帮助!

深入解析Node.js中的非阻塞I/O

如何理解NodeJs的非阻塞I/O

1、I/O:即  Input/output  指一个系统的输入和输出

2 、非阻塞和阻塞的主要区别在:在接收输入到输出结果之间的过程中,能否继续接收其他的输入【推荐学习:《nodejs 教程》】

例子:

比如说:出去吃饭

出去吃饭通常有两种方式:
1 去食堂吃:排队打饭

  • [排队] - [等前面的人打饭 ] - [自己打饭 ] - [吃饭]

2 去餐厅吃

  • [坐下 ] - [ 点菜] - [ 等待] - [ 吃饭]

针对这两种吃饭方式而言:

  • 1 食堂吃:对于打饭人员而言,必须等前面一个人打完了,才会打下一个人的饭,这个过程就是阻塞模式

  • 2 餐厅吃:去餐厅吃饭,服务员在给你点完餐之后,回继续处理下一个人的点餐需求,等到你的饭好了,再将饭给你送过来,对于服务员而言,这个过程就是非阻塞的过程

理解非阻塞I/O的要点

  • 1 确定一个进行I/O操作的系统,比如说:在上面的打饭例子里面,进行I/O的系统就是服务人员。

  • 2 在系统进行I/O操作的过程中能否再进行其他的I/O

代码演示

示例代码里面我们引入了一个库 glob,这个库主要是用来查找匹配条件的文件。 详情请看 https://www.npmjs.com/package/glob

首先,我们先使用glob提供的同步的方法来读取文件

    const glob = require("glob");
    let result = null;
    result = glob.sync(__dirname + "/**/*");
    console.log(result);
登录后复制

结果为一个文件数组

1.png

我们来看一下这个同步操作的执行时间:

    const glob = require("glob");

    let result = null;
    console.time("glob");
    result = glob.sync(__dirname + "/**/*");
    console.timeEnd("glob");
登录后复制

结果:

2.png

一个读取文件的操作,会令进程阻塞33毫秒,这是不能接受的!

接下来,我们使用异步的方式去读取文件

    let result2 = null;
    console.time("glob2");
    glob(__dirname + "/**/*", (err, res) => {
      console.log("glob over");
    });
    console.timeEnd("glob2");
登录后复制

结果:

3.png

执行异步读取文件一共花了4毫秒,并且在执行异步读取文件的过程中我们也能进行其他的操作。

结束语

经过学习,相信大家对非阻塞I/O的理解也更加深刻了,那么,下次见。好好学习,天天向上!

4.png

更多编程相关知识,请访问:编程视频!!

以上是深入解析Node.js中的非阻塞I/O的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

图文详解Node V8引擎的内存和GC 图文详解Node V8引擎的内存和GC Mar 29, 2023 pm 06:02 PM

本篇文章带大家深入了解NodeJS V8引擎的内存和垃圾回收器(GC),希望对大家有所帮助!

一文聊聊Node中的内存控制 一文聊聊Node中的内存控制 Apr 26, 2023 pm 05:37 PM

基于无阻塞、事件驱动建立的Node服务,具有内存消耗低的优点,非常适合处理海量的网络请求。在海量请求的前提下,就需要考虑“内存控制”的相关问题了。 1. V8的垃圾回收机制与内存限制 Js由垃圾回收机

聊聊如何选择一个最好的Node.js Docker镜像? 聊聊如何选择一个最好的Node.js Docker镜像? Dec 13, 2022 pm 08:00 PM

选择一个Node​的Docker镜像看起来像是一件小事,但是镜像的大小和潜在漏洞可能会对你的CI/CD流程和安全造成重大的影响。那我们如何选择一个最好Node.js Docker镜像呢?

深入聊聊Node中的File模块 深入聊聊Node中的File模块 Apr 24, 2023 pm 05:49 PM

文件模块是对底层文件操作的封装,例如文件读写/打开关闭/删除添加等等 文件模块最大的特点就是所有的方法都提供的**同步**和**异步**两个版本,具有 sync 后缀的方法都是同步方法,没有的都是异

Node.js 19正式发布,聊聊它的 6 大特性! Node.js 19正式发布,聊聊它的 6 大特性! Nov 16, 2022 pm 08:34 PM

Node 19已正式发布,下面本篇文章就来带大家详解了解一下Node.js 19的 6 大特性,希望对大家有所帮助!

聊聊Node.js中的 GC (垃圾回收)机制 聊聊Node.js中的 GC (垃圾回收)机制 Nov 29, 2022 pm 08:44 PM

Node.js 是如何做 GC (垃圾回收)的?下面本篇文章就来带大家了解一下。

一起聊聊Node中的事件循环 一起聊聊Node中的事件循环 Apr 11, 2023 pm 07:08 PM

事件循环是 Node.js 的基本组成部分,通过确保主线程不被阻塞来实现异步编程,了解事件循环对构建高效应用程序至关重要。下面本篇文章就来带大家深入了解Node中的事件循环 ,希望对大家有所帮助!

node无法用npm命令怎么办 node无法用npm命令怎么办 Feb 08, 2023 am 10:09 AM

node无法用npm命令是因为没有正确配置环境变量,其解决办法是:1、打开“系统属性”;2、找到“环境变量”->“系统变量”,然后编辑环境变量;3、找到nodejs所在的文件夹;4、点击“确定”即可。

See all articles