事件循环

45 阅读1分钟

单线程

JavaScript是一种单线程的编程语言,同一时间只能做一件事,所有任务都需要排队依次完成。

为什么JS不能有多个线程吗?

JS作为浏览器脚本语言,主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会来很复杂问题。

事件循环

  • 事件循环就是一个执行消息队列的机制。

为什么会出现事件循环?

因为浏览器的渲染主线程是单线程,而为了避免主线程出现阻塞的情况,采用了异步的形式执行,为了解决异步任务的问题,最终采用事件循环这种执行消息队列的机制。

宏任务与微任务

宏任务:scriptsetTimeoutsetIntervalsetImmediateI/OUI交互事件

微任务:promisenextTick

若同时存在promisenextTick,先执行nextTick

在同一次循环中,微任务比宏任务优先执行,任务按照推入队列的顺序执行(FIFO)