什么是事件循环?

94 阅读1分钟

事件循环也可以被称之为消息循环,是浏览器主线程的工作方式.

  • 我看到一些文章有描述道,Chrom源代码中message_loop其实就是一个无止尽的for循环,每次循环都会从消息队列中取出第一个任务执行,而其他线程也只需要在合适时机将任务推入队列末即可。当任务队列没有了之后就会进入休眠直到被其他线程唤醒。其实我也不懂C++之类的。 image.png

任务也是存在优先级的

  • 每个任务都有一个任务类型,同一个类型的任务必须在一个队列中,不同类型的任务可以分属不同的队列。
  • 浏览器必须准备好一个微队列,微队列中的任务优先所有的其他任务执行

在目前Chrome的实现中,至少包含了下面的队列

  • 延时队列:用于存放计时器达到后的回调任务,优先级 【中】
  • 交互队列:用于存放用户操作后的产生的事件处理任务,优先级【高】
  • 微队列:用于存放需要最快执行的任务,优先级【最高】

传送门: juejin.cn/post/714907… 看的出来内容其实来自同一个地方,这里介绍更加详细!不喜勿喷。