【发布时间】:2026-02-16 11:10:02
【问题描述】:
我知道 JS 函数(即setTimeout(function(){...}, TIME))将它接收到的函数作为参数放入浏览器的事件循环中,并且在处理完所有内联/同步 JS 调用后将处理此事件循环。
但是当他具有以下 HTML 页面结构时实际会发生什么:
<html>
<head>
<script> MANY INLINED SCRIPTS </script>
<script src="file.js"></script>
<script> setTimeout(function(){...}, TIME)</script>
.
.
.
然后页面继续前进,这种结构可能会不断重复,直到到达</html>。
这种情况下事件队列什么时候处理?
编辑:我想为我页面中的脚本创建某种惰性加载器。我依赖来自其他来源的内容,这些内容应该只在解析 DOM 之后才会出现,并且希望能够响应。
【问题讨论】:
-
文档解析完成后,打开事件循环以处理异步事件/动作。 Does this example help?
-
@zzzzBov 我认为在 DOM 完全准备好之前可能会发生超时回调,但我不是 100% 确定。
-
@Draconar 如果您有一些特别的问题要解决,您可能需要将其添加到问题中。
-
伙计们!太感谢了。这回答了我的问题。我想确保所有内联的东西在事件循环触发之前完成。
-
@zzzzBov - 我一直不清楚的一个案例。如果在连接不良的情况下加载大型 HTML 文档,我相信下载会停止足够长的时间,以使浏览器能够绘制到目前为止到窗口的 DOM。如果在绘制结束时,如果浏览器仍在等待更多字符,它会旋转事件循环吗?
标签: javascript html dom-events unobtrusive-javascript