• 技术文章 >web前端 >js教程

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

    青灯夜游青灯夜游2021-11-03 19:19:10转载313
    本篇文章带大家了解一下Node.js中的非阻塞I/O,希望对大家有所帮助!

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

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

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

    例子:

    比如说:出去吃饭

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

    2 去餐厅吃

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

    理解非阻塞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删除
    专题推荐:Node.js 非阻塞I/O
    上一篇:JavaScript中函数如何声明 下一篇:Angular学习之路由(Routing)浅析
    千万级数据并发解决方案

    相关文章推荐

    • nodejs是一个服务器吗• 命令行怎么查看nodejs版本号• nodejs中的中间件是什么意思• nodejs中如何定义全局变量• nodejs和jquery的区别是什么• 认识Node.js,聊聊node的模块化
    1/1

    PHP中文网