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

标签 javascript multithreading settimeout

我想在页面上分离线程以防止 gui 卡住。为此,我正在运行一个函数,该函数将使用 setTimeout 将 gui 卡住在另一个线程中,但仍然卡住。

代码和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>

最佳答案

即使您已通过 setTimeout 委托(delegate)执行,它仍将在同一个线程中执行,它只会在队列中等待时间,并会推迟任何其他事件,直到它完成。

请引用《Secrets of JS Ninja》一书中的这张精彩图片:

enter image description here

关于javascript - 在javascript中的另一个线程中运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613396/

相关文章:

javascript - 绕过 ASP.NET 中的查询字符串验证(XSS 预防)

javascript - 如何使用循环提取数组中的json数据?

javascript - 动态生成的表显示错误

javascript - kraken.js 后端可以更改网页内容吗?

c++ - 如何从单独的线程控制SFML窗口?

Javascript setTimeout 函数重复

c# - 将TaskCompletionSource转换为Task.FromResult <TResult>吗?

python - 处理另一个线程中的异常

javascript - 如何根据其他循环中的变量创建定时循环?

javascript - 使用 Drum Machine 的 setTimeout 解决延迟问题