我想单独在页面上的线程来防止gui冻结。为此,我正在运行一个函数,它会使用setTimeout在另一个线程中冻结gui,但仍然冻结。在javascript中的另一个线程内运行代码
的代码和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。 – mishik
但jquery ajax请求正在不同线程中工作,如果我们说'async:true'。我现在正在寻找关于网络工作者的好信息。我需要在其他线程中运行某些东西,而gui仍然可以触摸并从网络加载另一个数据。 – uzay95
该ajax请求的回调仍将在同一个线程中执行。 'async:true'意味着浏览器在等待Ajax调用结果时可以花费一些时间处理其他任务。 – mishik