在JavaScript中的另一个线程中运行代码

前端之家收集整理的这篇文章主要介绍了在JavaScript中的另一个线程中运行代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在页面上分开线程,以防止gui的冻结.为此,我运行的功能,将冻结gui在另一个线程与setTimeout但仍然冻结.

代码和jsbin链接如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"
  5. type="text/javascript"></script>
  6. <Meta charset="utf-8" />
  7. </head>
  8. <body>
  9. <div id="div1"></div>
  10. <div id="div2"></div>
  11. <input type="button" value="düðme" id="btn" />
  12.  
  13. <script type="text/javascript">
  14. $("#btn").on("click",function(){
  15. $("#div1").html(new Date());
  16. });
  17.  
  18. $(document).ready(function(){
  19. setTimeout(function() { count(); },1);
  20. });
  21.  
  22. function count(){
  23. for(var i =0;i<100000;i++){
  24. $("#div2").html(i);
  25. }
  26. $("#div2").append(new Date());
  27. }
  28. </script>
  29.  
  30. </body>
  31. </html>

解决方法

即使您已经通过setTimeout委派执行,它仍将在同一个单独的线程中执行,它只会等待其队列中的时间,并将推迟任何其他活动,直到完成.

请参考这本令人敬畏的图片“JS忍者的秘密”书:

猜你在找的JavaScript相关文章