js-循环执⾏⼀个函数
js⾥的两个内置函数:setInterval()与setTimeout()提供了定时的功能,前者是每隔⼏秒执⾏⼀次,后者是延迟⼀段时间执⾏⼀次。javascript是⼀个单线程环境,定时并不是很准,遇到阻塞的操作会延迟,代码:
以上代码会每隔⼀分钟弹窗,如果不关闭弹窗。Js不会在下⼀秒执⾏这个函数。也就说,被阻塞了。除了setInterval()实现函数重复执⾏外,还可以⽤setTimeout()实现函数重复执⾏。是这么做的:
代码中⽤setTimeout()调⽤⾃⾝。这样函数执⾏⼀次,会⼀直延迟⼀段时间调⽤⾃⾝,实现了函数重复执⾏,是不是觉得很妙?看过许多⽹页上⽤到的jquery倒计时插件,都是⽤setTimeout()来重复执⾏函数。
setTimeout()执⾏顺序有个坑,看下⾯的代码,你觉得控制台输出的结果是什么:
答案是先输出2,再输出1。这跟我们的直觉是不⼀致的。当事件队列为空的时候,才执⾏SetTimeout()⾥⾯的代码。回到前⾯,js定时不准的问题,看到⼀篇靠谱的博客,⽤的是setTimeout()这种。可以参考后续博客,点下⾯的链接: