执行js代码时,遇到同步任务,直接推入调用栈执行,遇到异步任务,将该任务挂起,等到有返回结果后放到任务队列中;
当调用栈中的任务全部执行完成后,这时开始事件循环(Eventloop),不断的访问任务队列,将其中的任务推到调用栈中执行.
事件循环的大致过程:
- 清空调用栈中的同步代码
- 执行微任务队列中的微任务
- 渲染dom
- 触发事件循环,不断询问任务队列中是否有要执行的语句,有则调入调用栈中执行
异步任务又分为微任务和宏任务,微任务优先级高于宏任务,微任务在dom渲染前触发,宏任务在dom渲染后触发
宏任务:setTimeout,setInterval,Ajax
微任务:Promise,async/await
标签:调用,dom,队列,JS,任务,循环,栈中,机制,执行 From: https://www.cnblogs.com/qianduan-Wu/p/16652813.html