1、什么是事件循环? js是单线程的,直白来说就是一个时间点下JS引擎只能去做一件事情,但是js执行的任务分为同步和异步两种,在异步执行等待过程中,js引擎会去执行其他同步任务,等到异步执行完毕再去执行异步回调,异步任务执行完毕的这个通知就是事件循环,把异步执行的回调部分交给事件循环,等到合适的时机再还给js线程进行执行;
事件循环是由一个队列组成,异步回调任务遵循先进先出原则,js引擎空闲时会被一轮一轮取出,这就是循环;
队列中的任务分为宏任务跟微任务;
- 宏任务:setTimeout,setInterval,Ajax,DOM事件
- 微任务:Promise,async/await
执行顺序是 微任务 > dom渲染 > 宏任务