我想在页面上分开线程,以防止gui的冻结.为此,我运行的功能,将冻结gui在另一个线程与setTimeout但仍然冻结.
- <!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委派执行,它仍将在同一个单独的线程中执行,它只会等待其队列中的时间,并将推迟任何其他活动,直到完成.
请参考这本令人敬畏的图片“JS忍者的秘密”书: