为了账号安全,请及时绑定邮箱和手机立即绑定

setInterval中进行循环时间隔时间不对

setInterval中进行循环时间隔时间不对

尚方宝剑之说 2019-03-12 17:15:31
以上全部JS代码,想要实现的是每隔2秒,text文本变化一次,但是在每次轮询完focusText数组之后,也就是text从“EXPLORE”变为“TIME”时,间隔时间会超过2秒,请问这是为什么?
查看完整描述

4 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

数组越界了,应该是


i++

if (i >= focusText.length) {

 i = 0

}


查看完整回答
反对 回复 2019-04-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

// 使用i<focusText时,i的范围是[0, 1, 2, ..., focus.length],正确的应该是[0, 1, 2, ..., focus.length - 1]

if (i < focusText.length - 1) { 

 i++

}


查看完整回答
反对 回复 2019-04-03
?
HUWWW

TA贡献1874条经验 获得超12个赞

这是逻辑错误,你的i的范围是[0, focusText.length],而不是[0, focusText.length)。觉得代码不按自己想的那样跑就console.log,打印调试信息是最基本的debug方法。


查看完整回答
反对 回复 2019-04-03
?
智慧大石

TA贡献1946条经验 获得超3个赞

看了前面的答案,好像没答到点子上...

======================

setInterval的行为是每隔一定时间,将回调函数放入队列。至于何时能执行回调函数,取决于之前的代码执行时间。

最理想的情况是前面没有正在执行的代码,那么就可以立即执行回调函数了,不过即使这样时间也不是准确的2秒,总是要多一些的


查看完整回答
反对 回复 2019-04-03
  • 4 回答
  • 0 关注
  • 1588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信