私はデスクトップ アプリケーションのバックグラウンドを持っていますが、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);
});