Js事件循环

事件循环 - js是单线程非阻塞的,一次只能执行一个任务,可以简单的看做是一个死循环,有任务的时候会执行任务,没有任务的时候进入休眠状态。

而任务可以分为 :
同步任务 -- js代码 Promise中的代码
异步任务 -- 宏任务 -- settimeout setinterval i/o操作 dom事件
-- 微任务 -- promise的then中的代码 async/await的后面代码
特殊任务 -- requestAnimationFrame 专为动画api (他会在渲染的每帧前执行 精准)
-- requestIdleCallback 空闲时间执行(加载日志等)
-- web worker 浏览器实现的多线程api

微任务优先级高于宏任务!

js执行时,一段代码被压入调用栈(call stack) 当代码(同步任务-js代码)执行完毕后,看微任务队列有没有任务,清空微任务后,看宏任务队列,执行一个宏任务后,再看微任务队列,有则清空,如此循环。

特殊任务:requestAnimationFrame是执行完一个宏任务和清空微任务后 如果浏览器有渲染需求 则会先执行他的回调 后渲染
requestIdleCallback 如果还有空闲时间 执行这个回调
继续进入事件循环

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

相关阅读更多精彩内容

友情链接更多精彩内容