【发布时间】:2013-07-12 10:58:53
【问题描述】:
我想在页面上分离线程以防止 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>
【问题讨论】:
-
这仍然会在同一个线程中执行。一切都将在同一个线程中执行。唯一的例外是 WebWorkers。
-
但是如果我们说
async: true,jquery ajax 请求在不同的线程中工作。我现在正在寻找有关网络工作者的好信息。我需要在其他线程中运行一些东西,同时 gui 仍然可以触摸并从网络加载另一个数据。 -
该 ajax 请求的回调仍将在同一个线程中执行。
async:true只是意味着浏览器可以在等待 ajax 调用结果的同时花一些时间处理其他任务。
标签: javascript multithreading settimeout