Skip to content

什么是事件循环机制Event loop

明确

浏览器环境与Node.js环境都具有事件循环的机制,这里主要讲浏览器的事件循环机制

前置知识

js是一门单线程、非阻塞的语言。 单线程这意味着只有一个主线程来处理代码。

事件循环机制

当线程处理到异步代码时不会立即停下来,而是将异步代码放入事件队列(Task Queue),被放入事件队列的异步代码不会立即执行,而是等待所有的同步代码执行完毕。主线程就会查找事件队列中是否存在任务,如果有则从中取出排在第一位的任务并执行。然后在执行其中的同步代码,一直循环到结束,这就是事件循环机制。

异步任务分为宏任务与微任务

常见宏任务:setInterval()、setTimeout()、requestAnimationFrame()

常见微任务:Promise.then catch finally、MutationObserver

执行顺序

执行宏任务前会清空微任务 image