nodejs 非阻塞,

  nodejs 非阻塞,

  Node.js中的非阻塞I/O是什么?本文通过实例带你了解Node.js中的非阻塞I/O希望对你有帮助!

  node.js速度课程简介:进入学习

  I/O是输入/输出。一个系统的阻塞I/O和非阻塞I/O的区别在于,我们都是系统的接收输入,在到输出期间,能不能接收其他输入

举个栗子

  去食堂吃饭都要排队。

  我们的流程是:排队-

  出去吃:餐厅点菜。

  现在我们的流程是:坐下-点餐-等待-开始吃饭。

  排队吃饭还是去餐馆点餐

  对于点餐的我们来说:

  排队吃饭是挡住了I/O餐厅的订单,但没有挡住I/O,继续看最上面一句:

  在栗子中,系统=食堂做饭的阿姨或者餐厅的服务员,输入=点餐,输出=上菜(上菜)。

  阿姨一次只能做一顿饭——阻塞I/O。

  服务员点餐后还可以服务其他客人——非阻塞I/O。

  :

其实,这个问题小学老师就教过我们

  .你没想到吗?(其实我也没想到~)

  在这个过程中,我们用洗衣机洗衣服=输入,干衣服=输出。在洗衣服的过程中,我们可以做别的事情,所以这个属于非阻塞I/O哟。

  

思考

  要了解非阻塞I/O,首先要确定的是什么?

  我们需要确保有一个输入/输出系统。考虑在I/O过程中是否可以进行其他I/O。是——非阻塞不能——阻塞

写个栗子

  ,先创建一个index.js,然后打开我们的前端vs-code,打开终端,执行npm install glob,安装一个glob包,帮助我们更方便的观察I/O是否阻塞。

  让我们先来看看阻塞I/O。

  首先粘贴代码:index.js

  const glob=require( glob );

  var结果=null

  console.time(glob )

  result=glob . sync(_ _ dirname /* */* )

  console.timeEnd(glob )

  Console.log(result)首先,使用require来介绍我们的glob包。接下来,使用glob.sync打印一个目录。打印结果时,使用time/timeEnd记录时间,并查看node执行此操作需要多长时间。

  在终端中输入node index.js直接运行这个文件。

  看第一行。在我的电脑上执行需要20.93毫秒,对于一个服务器来说不算小。

  看看非阻塞I/O。

  直接装载代码:

  const glob=require( glob );

  var结果=null

  console.time(glob )

  glob(__dirname /**/* ,function(err,res){

  结果=res

  //console.log(结果)

  console.log(得到结果);

  })

  console.timeEnd(glob )

  Console.log(今天滚动了吗?)这次我们用一个回调函数来操作,因为打印出来的结果行太多,所以用打印出来的 got result 来代替,计时完成后执行一个print语句操作。让我们来看看结果:

  首先是我们的时间:3.258ms,相比之前的时间20.93,简直少了太多。之后就是我们的输出语句,最后我们打印出想要的运算结果。也就是说,它在输入和输出之间进行其他运算,对结果没有影响,花费的时间也少很多!

  

结论

  我的理解:非阻塞I/O让我们减少了很多等待的时间,在等待的时间里,我们还可以进行一些其他的操作(欢迎大家的建议!)

  有关编程的更多信息,请访问:编程入门!即Node.js中的非阻塞I/O是什么?通过实例了解!更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: