浏览器的事件循环

为什么有事件循环?

    js是单线程(如果多线程,一个线程要删除dom,一个要修改dom,会冲突),但是如果想要处理一些异步逻辑,这个时候就出现了even loop。

宏任务和微任务了解吗?

    宏任务:整体代码块,setTimeout,setIntreval,

    微任务: new Promise().then()中的then,

为什么要引入微任务,只有一种类型的任务不行么?

    宏任务,先进先出的原则。如果有优先级高一点的任务,先进先出是不行的,这个时候有了微任务。

浏览器里的事件循环?

    事件循环,先执行宏任务,其中同步任务立即执行,异步任务,加载到对应的的Event Queue中(setTimeout等加入宏任务的Event Queue,Promise.then加入微任务的Event Queue),所有同步宏任务执行完毕后,如果发现微任务的Event Queue中有未执行的任务,会先执行其中的任务,这样算是完成了一次事件循环。接下来查看宏任务的Event Queue中是否有未执行的任务,有的话,就开始第二轮事件循环,依此类推。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容