我是桌面应用背景,在学习Javascript的时候,真的很难理解Javascript中的线程机制。
例如:
<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
for (var i = 0 ; i < 100000 ; i ++){
$("#loop1").html(i);
}
});
$("#btn2").click(function(){
for (var i = 0 ; i < 100000 ; i ++){
$("#loop2").html(i);
}
});
});
</script>
</head>
<body>
Loop 1 : <p id="loop1"></p>
<button id="btn1">Button 1</button>
<br/><br/><br/>
Loop 2 : <p id="loop2"></p>
<button id="btn2">Button 2</button>
</body>
</html>
当我单击按钮 1 时,浏览器会挂起,因此当我单击按钮 2 时,它不会响应。通常在桌面应用程序中,我会将循环发布到后台线程中。但是我将如何在 Javascript 中做到这一点?或者在Javascript中处理长时间处理的最佳方法是什么?
编辑:
下面的代码不起作用,但不知道为什么。
$("#btn1").click(function(){
setTimeout( function(){
for (var i = 0 ; i < 100000 ; i ++){
$("#loop1").html(i);
}
}
, 0);
});