Event Loop
是 JavaScript
中实现异步编程的核心机制。下面是 Event Loop
的执行过程:
执行同步任务,这些任务在主线程中按照顺序执行。
执行微任务。当同步任务执行完后,会检查是否有微任务需要执行。如果有,那么按照它们被添加的顺序依次执行。微任务主要包括 Promise
的回调函数、MutationObserver
的回调函数等。
执行宏任务。宏任务分为两种:一种是浏览器自带的宏任务,比如 setTimeout
、setInterval
等;另一种是由用户自定义的宏任务,比如通过 setTimeout
或 setInterval
设置的定时器、通过 XMLHttpRequest
发送的网络请求等。
重复执行第 2 步和第 3 步,直到任务队列中的任务全部执行完毕。
需要注意的是,在每次执行完宏任务后,都要先执行微任务,然后才能执行下一个宏任务。这个顺序是固定的,不能改变。这也是为什么 Promise
的 then
回调总是比 setTimeout
的回调先执行的原因。
本文作者:叶继伟
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!