示例详细解释了JavaScript中setTimeout函数的执行顺序
序
SetTimeout,一个前端工程师必须处理的功能。它看起来非常简单,有一个非凡的名字——计时器。其实网上有很多关于JavaScript中setTimeout的文章,但我总觉得例子不够直接具体。因此,我写了一个简单的例子并解释了它,希望我们能理解setTimeout是如何实现的。下面的话就不多说了,我们来看看详细的介绍:
示例代码如下:
可变时间1=新日期()。getTime();console.log(1,time 1);setTimeout(函数(){ var time4=new Date()。getTime();console.log(4,time 4);for(var a=0;a10000000000a){ a=a 1;} var time2=新日期()。getTime();console.log(2,time 2);},2000);setTimeout(函数(){ var time3=new Date()。getTime();console.log(3,time 3);},1000);setTimeout(函数(){ var time5=new Date()。getTime();console.log(5,time 5);},3000);setTimeout(函数(){ var time6=new Date()。getTime();console.log(6,time 6);},14000);代码非常简单,每个人都必须理解。执行结果如下:
说明:setTimeout是一个异步执行函数。程序执行console.log(1,time1)后;如果遇到setTimeout,会把函数放在等待队列中,等待当前主程序执行setTimeout。因为后面的都是setTimeout,所以都会被放到等待队列中~ ~ ~
那么谁将首先执行这些队列中的函数呢?例如,它是根据setTimeout中的第二个参数(延迟时间)确定的
setTimeout(函数(){ var time3=new Date()。getTime();console.log(3,time 3);},1000);那么这段代码将在主程序执行1000毫秒后执行。如果延迟时间为2000,则该代码将在主程序执行2000毫秒后执行。请记住,延迟时间总是相对于主程序执行的时间来计算的,多次设置超时的顺序也是由这个延迟时间决定的。如果要花很多时间才能达成协议呢?可以参考上图中执行结果的数字2和数字5对应的时间。由于js是一个单线程,在执行这个setTimeout之后,程序将在下一个setTimeout之前执行。无论下一个setTimeout的延迟时间是多少,如果这两个setTimeout之间的差异小于第一个setTimeout所消耗的时间,程序将在执行完成后立即等待这个setTimeout执行下一个setTimeout。如果差值大于经过的时间,可以根据与主程序约定的延迟执行(setTimeout中的第二个参数)
摘要
以上就是本文的全部内容。希望本文的内容能给你的学习或工作带来一些帮助。有问题可以留言交流。谢谢你的支持。
版权声明:示例详细解释了JavaScript中setTimeout函数的执行顺序是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。