event-loop 执行过程事件轮询过程

1,748 阅读1分钟

js是单线程的,异步主要是回调来实现,event-loop就是异步回调的实现原理

js执行过程是先把同步代码执行完,再执行异步代码

同步代码执行完,就启动event-loop机制,一步一步执行

event loop

1. 同步代码一行一行执行放入执行栈中(call stack) ,遇到异步代码(定时器,ajax)放入web api中,等待执行时机

2 . 如果call stack为空,同步代码执行完后,就启动event loop

3 . 开始把web api 的函数放入 callback queue中,然后event轮询执行callback queue中的函数,如果有则放入call stack中,相当于同步代码执行

4. 然后继续轮询查找,像永动机一样循环工作,指导执行完成

dom 与event loop的关系

1 . dom事件也是使用回调,基于event loop

宏任务(macroTask)和微任务(microTask)

每次call stack执行完成后都有从新进行Dom渲染,每次dom结构有改变就会渲染

dom渲染后就开始event loop

微任务在dom渲染前执行

宏任务在dom渲染后执行

微任务放到 macroTask中的,宏任务放到****callback queue中的