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不会更新,会处于卡死状态。 

相关文章:

  • 2021-10-03
  • 2021-11-14
  • 2022-01-22
  • 2022-12-23
  • 2021-04-15
  • 2021-07-16
猜你喜欢
  • 2021-08-13
  • 2021-05-19
  • 2022-12-23
  • 2021-12-23
  • 2021-06-19
  • 2021-09-26
  • 2021-12-31
相关资源
相似解决方案