【发布时间】:2018-08-22 08:44:35
【问题描述】:
在更新 DOM 之前,我遇到了 jQuery 等待其他 javascript 执行的问题。在下面的示例代码中,h1 元素在调用 SlowUpdate 函数后超过 5 秒不会更新。我正在使用 chrome,但在 IE 中观察到同样的问题。我知道它与控制台日志记录并不严格相关,因为我的实际项目没有将文本记录到控制台。相反,这个问题似乎与执行其余函数所需的时间有关。
任何指向此行为或潜在解决方案的详细解释的链接将不胜感激!
HTML:
<!DOCTYPE html>
<html>
<!--Load jQuery libraries-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<!--Load Javascript functions-->
<script src="Scratch.js" type="text/javascript" name="ScratchJS"></script>
<body>
<h1>Hello Change?</h1>
</body>
</html>
Javascript:
$(document).ready(function () {
$("h1").click(function () {
SlowUpdate();
});
});
function SlowUpdate() {
// This change isn't made before moving into the loop
$("h1").text("Change Complete");
// Take a bunch of time doing stuff
var i = 0;
while(i < 100000) {
console.log(i);
i++;
}
}
【问题讨论】:
-
jQuery 立即更新 DOM。在 Javascript 完成之前,浏览器不会对 DOM 进行更改。