大家都知道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中的函数逻辑
原标题:javascript单线程的理解
关键词:JavaScript