zoukankan      html  css  js  c++  java
  • Event Loop个人理解

    javascript引擎单线程程序,其执行同步操作会按顺序向下执行,执行异步操作则使用事件循环模型。

    js引擎线程遇到异步操作,会将异步操作交给对应的观察者,

    异步操作包括:

    dom事件 click,mousedown等
    定时器 setTimeout,setInterval
    IO 网络IO,文件IO,其他IO(localStorage,cookie),IO操作会交给对应的线程池来执行

    观察者观察异步操作的状态,在异步操作执行完成,会将对应的异步信息(包括callback等)封装成事件推入事件队列。

    js引擎线程会不断的轮询事件队列,按照先进先出的原则读取事件,若有事件,则取出,并执行其callback,执行一次callback的过程称为一次循环(Tick),

    执行完成,进入下一次循环(nextTick)。

    若事件队列为空,则js引擎执行空循环。

    在浏览器中,js引擎与GUI引擎是互斥的,即js引擎会阻塞UI渲染,当js同步持续执行的时候,UI不会更新,会处于卡死状态。 

  • 相关阅读:
    【NOI2008】志愿者招募
    【NOI2015】小园丁和老司机
    【TJOI2007】小朋友
    【HNOI2008】神奇的国度
    【CTSC2014】企鹅QQ
    【CQOI2014】通配符匹配
    【JSOI2008】火星人
    【SCOI2007】压缩
    【ZJOI2009】对称的正方形
    【LOJ#6066】同构子树
  • 原文地址:https://www.cnblogs.com/mengff/p/6224426.html
Copyright © 2011-2022 走看看