美文网首页
[学习笔记]事件循环eventloop

[学习笔记]事件循环eventloop

作者: 砂壶 | 来源:发表于2020-04-10 09:16 被阅读0次

Event Loop是一个程序结构,用于等待和发送消息和事件。

Web

JS引擎线程负责执行JS的主线程,"JS是单线程的"就是指的这个线程,这个线程跟渲染页面的GUI线程是互斥的。

  • 主线程每次执行时,遇到同步任务就一直执行完
  • 遇到异步API就将它交给对应的异步线程,自己继续往下执行同步任务
  • 异步线程执行异步API完成后,将异步回调事件放入事件队列上
  • 主线程同步任务完成后,看事件队列有任务就取出执行,然后不断循环该流程

事件循环中的异步队列有两种:macro(宏任务,如setTimeout、setInterval、 setImmediate、 I/O 操作、UI 渲染等)队列和 micro(微任务,如Promise().then、MutationObserver等)队列。宏任务队列可以有多个,微任务队列只有一个。

当事件循环遍历队列时,先检查微任务队列,如果里面有任务,就全部拿来执行,执行完之后再执行一个宏任务。执行每个宏任务之前都要检查下微任务队列是否有任务,如果有,优先执行微任务队列。

Node

  • 定时器(timers):执行已经被 setTimeout() 和 setInterval() 的调度回调函数。
  • 待定回调(pending callbacks):执行延迟到下一个循环迭代的 I/O 回调。
  • idle, prepare:仅系统内部使用。
  • 轮询(poll):检索新的 I/O 事件;执行与 I/O 相关的回调。
  • 检测(check):setImmediate() 回调函数在这里执行。
  • 关闭的回调函数(close callbacks):一些关闭的回调函数,如:socket.on('close', ...)。

process.nextTick()不属于任何的Event Loop阶段,真正的立即执行。
setImmediate() 在事件循环的接下来的迭代或 'tick' 上触发。

学习资料:

相关文章

  • [学习笔记]事件循环eventloop

    Event Loop是一个程序结构,用于等待和发送消息和事件。 Web JS引擎线程负责执行JS的主线程,"JS是...

  • netty-event-loop

    EventLoop是netty中负责处理Channel的IO事件的对象。从名称可以得知eventLoop是事件循环...

  • EventLoop事件循环

    一、先了解javascript为什么是单线程 |--javascript语言的特点:单线程。 |--线程和进程 ...

  • EventLoop事件循环

    我们常见的JavaScript运行时(runtime)有两个,一个是浏览器环境,一个是Node.js环境 Java...

  • JavaScript之EventLoop事件循环

    EventLoop事件循环 参考链接Tasks, microtasks, queues and schedules...

  • 初识EventLoop

    EventLoop,也就是平时所说的事件循环,那什么是eventloop呢?这里大致介绍一下。 首先,JavaSc...

  • 面试题总结(一)

    1、什么是 EventLoop EventLoop是一种事件循环机制,可以用来解决javascript单线程运行不...

  • 第 7 章 EventLoop 和线程模型

    EventLoop——事件循环,扩展了ScheduledExecutorService,可以提供JDK的所有方法,...

  • EventLoop-事件循环

    https://juejin.im/post/59e85eebf265da430d571f89[https://j...

  • EventLoop 事件循环机制

    什么是EventLoop? 浏览器协调用户操作、渲染、网络请求,硬件控制等事件源执行顺序的机制. 外部队列(Tas...

网友评论

      本文标题:[学习笔记]事件循环eventloop

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