js 的eventloop

浏览器环境下,异步任务分macroTask和microTask
宏任务macroTask:script中代码、setTimeout、setInterval、I/O、UI render
微任务microTask:Promise.then、Object.observer、MutationObserver

在浏览器中初始认为执行线程中没有代码,每一个<script>中的代码是一个独立的MacroTask,即会执行前面<script>中创建的microTask再执行后面<script>中的同步代码;
如果microTask一直被添加,则会继续执行microTask,卡死macroTask;
部分浏览器执行顺序可能与上述情况不符合,可能是不符合标准,或者是js与HTML部分标准冲突。
promise的then和catch才是microTask,本身内部代码不是。


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。