标签
note
字数
338 字
阅读时间
2 分钟
如果微任务执行完又返回另一个微任务,另一个微任务执行又返回另一个微任务,这样一直重复下去,会发生什么
会形成一个无限循环,导致浏览器的事件循环被阻塞,从而影响页面的响应性能。
在现代浏览器中,为了防止事件循环被阻塞,通常会限制微任务的嵌套深度,当嵌套深度达到一定的限制时,会自动将剩余的微任务转为宏任务执行,以避免事件循环被阻塞。
需要注意的是,过多的嵌套微任务可能会导致页面出现卡顿、响应迟缓等问题,因此在编写 JavaScript 代码时,需要注意控制嵌套微任务的深度,尽可能避免过多的嵌套微任务。
内存泄露:"Uncaught RangeError: Maximum call stack size exceeded"
嵌套层数
在 Chrome 浏览器中,每次事件循环中的微任务嵌套深度不能超过 10 层,否则会自动将剩余的微任务转为宏任务执行。在 Safari 和 Firefox 浏览器中,微任务嵌套深度的限制可能会更严格一些。