美文网首页
JavaScript事件循环机制和NodeJS时间循环机制

JavaScript事件循环机制和NodeJS时间循环机制

作者: Poppy11 | 来源:发表于2022-11-27 21:51 被阅读0次

JavaScript事件循环机制

image.png

一、是什么?

JavaScript是一门单线程语言,同一时间只能做一件事,但并不意味着单线程就是阻塞,而实现单线程非阻塞的方式就是事件循环。

JavaScript中,所有的任务都可以分为:

  • 同步任务:立即执行的任务,同步任务一般会直接进入到主线程中执行
  • 异步任务:异步执行的任务,例如ajax请求,或者setTimeout函数
image.png

从上面可以看出,同步任务进入主线程,异步任务进入任务队列,主线程内的任务执行完毕为空,会去读取任务队列对应的任务,推入主线程执行。上述过程不断重复就是事件循环机制。

二、宏任务与微任务

异步任务又分为宏任务与微任务

微任务

  • script (可以理解为外层同步代码)
  • setTimeout/setInterval
  • setImmediate、I/O(Node.js)

微任务

  • Promise.then
  • process.nextTick(NodeJS)
image.png

执行宏任务时,遇到微任务就放入微任务任务队列中,当宏任务执行完成后,会查看微任务的事件队列,然后将微任务依次执行完,再进行循环执行下一个宏任务。

NodeJS事件循环机制

image.png
  • Timers:用于存储定时器额回调函数(setInterval,setTimeout)
  • Pending callbacks:执行与操作系统相关的回调函数,比如启动服务器端应用时监听端口操作的回调函数就在这里调用。
  • 闲置阶段(idle, prepare):仅系统内部使用
  • 轮询阶段(poll):检索新的 I/O 事件;执行与 I/O 相关的回调(几乎所有情况下,除了关闭的回调函数,那些由计时器和 setImmediate() 调度的之外),其余情况 node 将在适当的时候在此阻塞
  • 检查阶段(check):setImmediate() 回调函数在这里执行
  • 关闭事件回调阶段(close callback):一些关闭的回调函数,例如关闭数据库连接的回调

相关文章

  • JavaScript事件循环机制和NodeJS时间循环机制

    JavaScript事件循环机制 一、是什么? JavaScript是一门单线程语言,同一时间只能做一件事,但并不...

  • iOS RunLoop由浅入深

    Event Loop Event Loop事件循环机制,如javascript的事件循环,以及依赖其的nodejs...

  • 《NodeJS开发教程-9事件循环与Timer》

    简介 本节我们来讲nodejs中的事件循环机制,之所以和Timer一块讲,是因为Timer的实现依赖事件循环机制,...

  • nodejs 事件循环机制

    Node.js 采用事件驱动和异步 I/O 的方式,实现了一个单线程、高并发的 JavaScript 运行时环境,...

  • nodejs事件循环机制

    node设计采用了单线程机制,但还可以承载高并发请求是因为node的单线程仅针对主线程来说,即每个node进程只有...

  • JavaScript-事件循环

    参考JavaScript运行机制之事件循环(Event Loop)详解 从setTimeout说事件循环模型 单...

  • Javascript事件循环机制

    通过学习JavaScript,我们都知道它是一门单线程语言,也就是说,在同一时刻,最多也只有一个代码段在执行,但一...

  • JavaScript 事件循环机制

    前端开发的童鞋应该都知道,JavaScript 是一门单线程的脚本语言。这就意味着 JavaScript 代码在执...

  • JavaScript事件循环机制

    js是单线程的,该线程中有唯一一个事件循环,任务队列可以有多个 JavaScript代码的执行过程中,除了依靠函数...

  • javascript事件循环机制

    javascript是一门单线程的非阻塞的脚本语言。单线程意味着javascript在执行代码的任何时候,都只有一...

网友评论

      本文标题:JavaScript事件循环机制和NodeJS时间循环机制

      本文链接:https://www.haomeiwen.com/subject/gumkfdtx.html