- 浏览器会将同步的代码任务(例如,简单的 JavaScript 代码,如函数或者变量声明)放入主线程中去执行。
- 对于那些异步任务(例如,setTimeout,Promises,fetch等),他们会被推送到任务队列或微任务队列。
- 当主线程中的所有同步任务都完成时,浏览器会查看微任务队列,如果有任何微任务(例如,Promise的then回调),它们将被一一取出并执行。
- 完成微任务队列的执行后,浏览器会执行渲染步骤,更新UI。
- 然后,浏览器会查看任务队列,如果有任何宏任务(例如,setTimeout的回调),浏览器会取出一个宏任务执行。
- 重复以上过程,即回到第3步,再次检查微任务队列,更新UI,然后再执行一个宏任务,如此循环。