您所在的位置:小祥子 » 编程 » JavaScript » 正文

javascript单线程的理解

时间:2015-08-12 编辑:dsq1030 来源:CnBlogs

大家都知道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中的函数逻辑

---恢复内容结束---

关键词:理解