美文网首页
JavaScript(二)----eventloop事件循环机制

JavaScript(二)----eventloop事件循环机制

作者: MoreCode | 来源:发表于2020-07-29 14:31 被阅读0次

JavaScript是单线程。

单线程原因

  • 为了避免复杂性,浏览器脚本语言的优势
    作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM,假如使用多线程在同一时间点对DOM进行增删操作,浏览器无法分辨以哪个进程为准。

为什么有同步任务与异步任务之分

提高GPU的利用效率

js任务执行

js中的同步任务会在主线程按照顺序执行,异步任务会进入任务队列,在主线程会形成一个执行栈,主线程中的任务执行完毕后,会在任务队列中去查看事件,将异步任务放入执行栈,开始执行。

事件循环EventLoop

主线程从任务队列中读取事件,这个过程是不断循环的,因此这个运行机制称为Event Loop

异步任务又分为宏任务(macrotask)和微任务(microtask),那么任务队列就有了宏任务队列和微任务队列,微任务总是在宏任务之前执行,也就是说:同步任务>微任务>宏任务,


宏任务&微任务.png

js代码执行流程

执行流程.png 事件循环.png

总结

  • 宏队列macrotask一次只从队列中取一个任务执行,执行完后就去执行微任务队列中的任务;
  • 微任务队列中所有的任务都会被依次取出来执行,知道microtask queue为空;
  • 图中没有画UI rendering的节点,因为这个是由浏览器自行判断决定的,但是只要执行UI rendering,它的节点是在执行完所有的microtask之后,下一个macrotask之前,紧跟着执行UI render。

相关文章

  • 面试题总结(一)

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

  • JavaScript(二)----eventloop事件循环机制

    JavaScript是单线程。 单线程原因 为了避免复杂性,浏览器脚本语言的优势作为浏览器脚本语言,JavaScr...

  • 异步操作和事件循环机制(Event Loop)续一

    上一次文章 异步操作和事件循环机制(Event Loop)中我们提到了 EventLoop ,而事件循环机制在 N...

  • JS EventLoop

    EventLoop 事件循环本篇摘录于这一次,彻底弄懂 JavaScript 执行机制 实际上打印出来的是(知识点...

  • EventLoop 事件循环机制

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

  • 事件循环EventLoop机制

    1. 宏任务与微任务 依据我们多年编写 ajax 的经验:js 应该是按照语句先后顺序执行,在出现异步时,则发起异...

  • Javascript 事件循环eventLoop

    都知道javascript是单线程,那么问题来了,既然是单线程顺序执行,那怎么做到异步的? 我们理解的单线程应该是...

  • js相关

    eventloop 主线程从任务队列中读取事件,这个过程是循环不断的,这种机制就是eventloop 宏队列也叫t...

  • javascript异步详解1:事件循环机制EventLoop

    一. js运行机制 js是单线程,但是存在同步【阻塞】和异步【非阻塞】执行模式 同步:从上到下、从左到右的⽅式执⾏...

  • JS事件循环机制 eventloop

    如何理解JS事件的循环机制(浏览器端)答: 我们知道JS是单线程运行的(暂时撇去web worker)、是异步的、...

网友评论

      本文标题:JavaScript(二)----eventloop事件循环机制

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