gpt4 book ai didi

javascript - js 处理完成时的基本 Javascript 加载消息

转载 作者:搜寻专家 更新时间:2023-11-01 05:07:41 24 4
gpt4 key购买 nike

我敢肯定这已经被问过 1000 次了,基本上我想做的就是更改页面元素的内容以显示加载消息,同时我的其他 javascript 代码(相当耗费资源)完成。问题是消息直到“其他 JS 处理”完成后才显示,因此完全违背了它的目的。一个简化的例子...

<html>
<head>
<title> crappity crapness </title>
<script type="text/javascript">
function showMessage(){
document.getElementById("content").innerHTML = "please wait while we waste some time";
}

function wasteTime(){
//alert("oh joy");
pausecomp(3000);
//alert("marvelous!");
}

function pausecomp(millis)
{
var date = new Date();
var curDate = null;

do { curDate = new Date(); }
while(curDate-date < millis);
}

</script>
</head>
<body>
<div id="content">Blah</div>
<br/>
<a href="http://www.google.com" onclick="showMessage(); wasteTime();"> link </a>
</body>

如果我取消注释“oh Joy”警报,div 中的文本会立即更新。如何在没有警报的情况下让它工作?

我知道我一定遗漏了一些简单的东西。谢谢

最佳答案

听起来您似乎在反对 Javascript 是单线程的,但浏览器不是。

基本上,您不能同时运行多个 Javascript。然而,浏览器仍然需要执行 Javascript 之外的事情,并在可能的时候继续这样做。问题是修改 DOM 是同步的(即 JS 执行停止直到它完成)还是异步的(JS 执行继续)没有定义。大多数浏览器都选择后者。但是 JS 执行仍然具有相当高的优先级,并且很多 DOM 更新被推迟到 JS 执行必须停止并等待。警告框是一个很好的例子,因为它正在等待用户输入。

做你想做的事情的方法是利用setTimeout()让当前一段JS结束,浏览器可以完成更新DOM,然后它可以执行JS等待超时运行。

关于javascript - js 处理完成时的基本 Javascript 加载消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com