什么是事件循环
js是单线程,同一时间只能执行一个事件,会有运行阻塞问题,为了解决这个问题,就用到了事件循环机制。
事件循环的过程
- 判断主执行栈里的任务是异步还是同步
- 同步任务先执行
- 异步任务由事件触发线程分发到相应的线程执行
- 异步任务执行完后
- 由事件触发线程把回调放到相应的事件队列
- js引擎会询问事件队列里是否有回调,同时还会看主线程同步代码执行完了没
- 同步代码执行完毕
- 按照先微任务,后宏任务的顺序把事件队列的回调放到主线程执行
宏任务
script主代码块、定时器任务
微任务
promise的函数。
微任务是es6才出现的,为了让事件队列里的某些任务可以先执行。