猿问

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

以上全部JS代码,想要实现的是每隔2秒,text文本变化一次,但是在每次轮询完focusText数组之后,也就是text从“EXPLORE”变为“TIME”时,间隔时间会超过2秒,请问这是为什么?

尚方宝剑之说
浏览 1589回答 4
4回答

30秒到达战场

数组越界了,应该是i++if (i >= focusText.length) { i = 0}

富国沪深

// 使用i<focusText时,i的范围是[0, 1, 2, ..., focus.length],正确的应该是[0, 1, 2, ..., focus.length - 1]if (i < focusText.length - 1) {&nbsp;&nbsp;i++}

HUWWW

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

智慧大石

看了前面的答案,好像没答到点子上...======================setInterval的行为是每隔一定时间,将回调函数放入队列。至于何时能执行回调函数,取决于之前的代码执行时间。最理想的情况是前面没有正在执行的代码,那么就可以立即执行回调函数了,不过即使这样时间也不是准确的2秒,总是要多一些的
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答