当前位置: 首页 > 面试题库 >

用setTimeout来实现setInterval?

璩涛
2023-03-14
本文向大家介绍用setTimeout来实现setInterval?相关面试题,主要包含被问及用setTimeout来实现setInterval?时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

(1)用setTimeout()方法来模拟setInterval()与setInterval()之间的什么区别?

首先来看setInterval的缺陷,使用setInterval()创建的定时器确保了定时器代码规则地插入队列中。这个问题在于:如果定时器代码在代码再次添加到队列之前还没完成执行,结果就会导致定时器代码连续运行好几次。而之间没有间隔。不过幸运的是:javascript引擎足够聪明,能够避免这个问题。当且仅当没有该定时器的如何代码实例时,才会将定时器代码添加到队列中。这确保了定时器代码加入队列中最小的时间间隔为指定时间。

这种重复定时器的规则有两个问题:1.某些间隔会被跳过 2.多个定时器的代码执行时间可能会比预期小。

下面举例子说明:

假设,某个onclick事件处理程序使用啦setInterval()来设置了一个200ms的重复定时器。如果事件处理程序花了300ms多一点的时间完成。

img width="626" alt="2018-07-10 11 36 43" src="https://user-images.githubusercontent.com/17233651/42487876-92656f2c-8435-11e8-8a5f-0a97918039da.png"

这个例子中的第一个定时器是在205ms处添加到队列中,但是要过300ms才能执行。在405ms又添加了一个副本。在一个间隔,605ms处,第一个定时器代码还在执行中,而且队列中已经有了一个定时器实例,结果是605ms的定时器代码不会添加到队列中。结果是在5ms处添加的定时器代码执行结束后,405处的代码立即执行。

function say(){
//something
setTimeout(say,200);
}
setTimeout(say,200)

或者

setTimeout(function(){
//do something
setTimeout(arguments.callee,200);
},200);

 

 类似资料:
  • 问题内容: 我想知道是否有人知道如何在node.js中实现setTimeout。我相信我在某处读到它不是V8的一部分。我迅速尝试找到实现,但是在source(BIG)中找不到它。例如,我找到了这个timers.js文件,然后例如链接到timer_wrap.cc。但是这些文件并不能完全回答我的所有问题。 V8有实施吗?我想从源头上也可以得出答案。 如何实施?javascript还是本机还是两者结合?

  • 本文向大家介绍JavaScript使用setTimeout实现倒计时效果,包括了JavaScript使用setTimeout实现倒计时效果的使用技巧和注意事项,需要的朋友参考一下 为了加强对JavaScript原生代码的编写能力,以及巩固setTimeout()的使用方法,制作了一个倒计时的demo,倒计时在现在的网站中算是一个常见的小功能,如果大家喜欢的话可以留下,就当作一个日常实用的小脚本。

  • 本文向大家介绍js学使用setTimeout实现轮循动画,包括了js学使用setTimeout实现轮循动画的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了setTimeout实现轮循动画的具体代码,供大家参考,具体内容如下 代码如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍JavaScript基于setTimeout实现计数的方法,包括了JavaScript基于setTimeout实现计数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript基于setTimeout实现计数的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 本文向大家介绍JavaScript使用setTimeout实现延迟弹出警告框的方法,包括了JavaScript使用setTimeout实现延迟弹出警告框的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript使用setTimeout实现延迟弹出警告框的方法。分享给大家供大家参考。具体如下: 下面的代码执行后点击按钮会延迟3秒钟弹出一个警告框,主要演示了setTimeout

  • 本文向大家介绍JavaScript setTimeout使用闭包功能实现定时打印数值,包括了JavaScript setTimeout使用闭包功能实现定时打印数值的使用技巧和注意事项,需要的朋友参考一下 我们这次使用setTimeout来实现一个按照时间定时,依次打印数值的例子.其实在早期的时候,也是我经常犯的一个错误,或者实现这种能力,似乎js比较牵强,其实是我的错,哈哈!没能理解JS强大之处.