你的位置:首页 > Java教程

[Java教程]javascript单线程的理解


 

大家都知道javascript是单线程执行的,但是浏览器又提供了setTimeout 和setInterval方法来模拟启动一个线程,来实现计时调用某个方法的功能。

这是如何实现的呢,浏览器是如何调用的呢,下面就来分析下,请看下面一段代码 

<html>  <body>  <script type="text/javascript">    function printHello()    {      console.time("hello");    }    function printHello1()    {      console.timeEnd("hello");    }    setTimeout(printHello,1000);    setTimeout(printHello1,5000);    function wait(time)    {      var now = Date.now();      while(Date.now() - now < time)      {      }    }    wait(5000);  </script>  </body></html>

以上代码得执行结果为

hello: 0.124ms

printHello 与printHello1几乎是同时执行的。

其实printHello和printHello1都是回调函数,javascript主线程执行完主逻辑后,才会执行setTimeout中的函数逻辑