zoukankan      html  css  js  c++  java
  • Event Loop 在浏览器和Node端的差异

    由于js是单线程语言,为了解决异步操作所以设计了事件循环。

    宏任务:setTimeout、setInterval 、script(整体代码)、 I/O 操作、UI 渲染等
    微任务:setImmediate、process.nextTick()、 new Promise().then(回调)、MutationObserver(html5新特性) 

    在事件循环中,宏任务和微任务分成了两类的队列,为了便于理解,微任务相当于是追加在宏任务队列后的一个独立的队列。

    差异:setTimeout、setInterval

    浏览器:

    宏任务单个执行:每执行一个后,就会去执行掉微任务队列中的所有任务。

    UI渲染:每次一个循环结束后(一个宏+整列微任务),如果需要会执行UI渲染。

    实时添加:微任务执行过程中可以向本队列继续添加微任务并顺序执行。

    vi设计http://www.maiqicn.com 办公资源网站大全https://www.wode007.com

    Node: 

    队列执行:任务执行时,会执行队列中的所有任务(包括宏任务队列)

    nextTick优先:微任务分的更细,node将nextTick回调单独化为一组微任务,所有nextTick队列可以和微任务队列一样实时添加,而且整个队列始终先于微任务队列执行。

    执行阶段更多:

    1. timers              :setTimeout、setInterval
    2. I/O callbacks   :此回调中,setImmediate始终先于timers执行,因为,此阶段(2)执行完毕后,顺序就是5check了。
    3. idle, prepare
    4. poll
    5. check                : setImmediate
    6. close callbacks
  • 相关阅读:
    输出字体颜色 "<li><font color=red>" + ......+ "</font>"
    sass跨文件重写变量
    sass兼容IE8透明度方法
    关于CSS中对IE条件注释的问题
    css规范
    transition代替简单的animation注意事项
    zepto触摸事件解决方法
    fullpage.js小技巧
    php访问全局变量
    好的列表布局
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/13744958.html
Copyright © 2011-2022 走看看