什么是事件循环机制Event loop
明确
浏览器环境与Node.js环境都具有事件循环的机制,这里主要讲浏览器的事件循环机制
前置知识
js是一门单线程、非阻塞的语言。 单线程这意味着只有一个主线程来处理代码。
事件循环机制
当线程处理到异步代码时不会立即停下来,而是将异步代码放入事件队列(Task Queue),被放入事件队列的异步代码不会立即执行,而是等待所有的同步代码执行完毕。主线程就会查找事件队列中是否存在任务,如果有则从中取出排在第一位的任务并执行。然后在执行其中的同步代码,一直循环到结束,这就是事件循环机制。
异步任务分为宏任务与微任务
常见宏任务:setInterval()、setTimeout()、requestAnimationFrame()
常见微任务:Promise.then catch finally、MutationObserver
执行顺序
执行宏任务前会清空微任务