素材牛VIP会员
关于nodeJS的几个理论知识
 pe***ei  分类:Node.js  人气:697  回帖:3  发布于6年前 收藏


1.nodeJS是单线程,为什么每个API又可以作为一个独立线程运行?
2.最后一条具体怎么理解?

 标签:node.js

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv5 码农
陈***0 其它 6年前#1

http://www.infoq.com/cn/articles/nodejs-asynchronous-io

Lv4 码徒
阿***阿 产品经理 6年前#2

单线程是说,对于你写的的 js 代码来说,代码执行的"指针"只能会位于一个地方,第一个地方的语句执行完之前不可能无缘无辜跳到另一个地方执行。

异步是说,你调用某个 API 之后,这句代码立即返回,去执行你写代码的后面一句。但是 nodejs 后台会同时去执行你发出的这条指令。

最后一句说的是 nodejs 的实现原理,这个初学可以先不用关心。

Lv6 码匠
轩***室 学生 6年前#3

推荐我之前写的一篇文章https://segmentfault.com/a/1190000005173218

  1. nodejs是事件驱动型的,事件驱动的观察者运行在单线程中,当调用异步函数的时候,该线程就会将这些函数任务布置下去,比如读取一个文件,监听某个端口,都会调用libuv库开启一个新的线程。但是并不是所有异步函数都会开启一个新的线程,可能只是简单的运行在单线程中。

  2. 单线程就是在一个whilte(true)里面检测事件队列有没有新的事件发生,比如文件读取结束了,或者是settimeout计时结束了,都会将一个事件推入到事件队列中,观察者每隔一段时间就去看看事件队列中有没有新的事件,有的话就会去暂停while(true)循环,然后调用回调函数执行,执行完毕后再开始while(true)循环

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取