我想在页面上分离线程以防止 gui 卡住。为此,我正在运行一个函数,该函数将使用 setTimeout 将 gui 卡住在另一个线程中,但仍然卡住。
代码和jsbin链接如下:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"
type="text/javascript"></script>
<meta charset="utf-8" />
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<input type="button" value="düðme" id="btn" />
<script type="text/javascript">
$("#btn").on("click",function(){
$("#div1").html(new Date());
});
$(document).ready(function(){
setTimeout(function() { count(); },1);
});
function count(){
for(var i =0;i<100000;i++){
$("#div2").html(i);
}
$("#div2").append(new Date());
}
</script>
</body>
</html>
最佳答案
即使您已通过 setTimeout
委托(delegate)执行,它仍将在同一个线程中执行,它只会在队列中等待时间,并会推迟任何其他事件,直到它完成。
请引用《Secrets of JS Ninja》一书中的这张精彩图片:
关于javascript - 在javascript中的另一个线程中运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613396/