【问题标题】:Can I expect DOM to be ready in the next VM tick我可以期望 DOM 在下一个 VM 滴答声中准备就绪吗
【发布时间】:2018-10-31 21:04:54
【问题描述】:

一旦 HTML 被加载,浏览器就会以 同步 的方式对其进行解析。通常我们使用DOMContentLoaded 事件等待DOM 准备好。但我想知道 DOM 是否会在下一个 VM 滴答声中始终准备好?如果我使用setTimeoutPromise.resolve().then() 等任何异步函数在下一个VM 滴答中运行回调,我是否可以依赖可用的DOM?

一个规范摘录的链接,保证受到赞赏。

一个例子是一个框架或一个库,它总是异步引导并且不为DOMContentLoaded事件添加监听器。

【问题讨论】:

  • 我尝试过使用 0 超时和 DOMContentLoaded 事件侦听器,总是首先调用 DOMContentLoaded(在 chrome 中)。我觉得超时脚本在执行之后也会先被解析,一旦解析完成就会触发 DOMContentLoaded

标签: javascript dom browser


【解决方案1】:

VM 滴答声无关紧要。回调由处理任务event loop 调用。任务开始时,DOM 将处于稳定状态。达到超时时,setTimeout 所做的所有事情都是将 queue a task 由事件循环处理。

【讨论】:

  • 是的,谢谢,我知道这一切。你的陈述任务开始时DOM将处于稳定状态基于什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 2012-10-16
  • 2014-03-29
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多