Javascript setInterval 每次运行时都会变短

标签 javascript setinterval

所以我做了一个逐个字母打印文本的函数,如下所示。(我知道我的命名方案不是很好请不要取笑。另外请记住,我对编码仍然很陌生所以我的代码可能看起来有点奇怪/效率低下。)

var text = document.getElementById("gametext")
var dialog =  "the entire text you want to print out"
var talk = "The whole text gets added here, letter by letter"
var charinc = 0

function talky() {
   setInterval(function(){
   if(charinc < dialog.length){
   talk = dialog.charAt(charinc++);
   text.innerHTML += talk;  
   }
   }, 100);
   charinc = 0
}

我在整个代码中多次调用此函数,将对话框设置为我想要打印的任何内容,然后调用该函数。一开始一切正常,但每次我运行它时,字母打印出来的速度似乎越来越快。我不太确定发生了什么,或者如何解决它。我在谷歌上做了一些搜索,但没有找到有用的东西。

最佳答案

第一次运行时,每 100 毫秒运行一次。

第二次运行它时,有两个间隔,每个间隔每 100 毫秒运行一次。

等等。

由于它们共享相同的变量,您只需让它们每 100 毫秒将输出速度提高一次。


或者:

  • 完成后调用 clearInterval(...)
  • 将全局变量作为参数传递给 talky,这样它们就不会在多个间隔之间共享
  • 只需更新变量而不是再次调用 talky

关于Javascript setInterval 每次运行时都会变短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37104177/

相关文章:

javascript - 在 Node.js 重新启动期间保留 setTimeout 和 setInterval

JavaScript/jQuery 间隔在 Internet Explorer 中执行两次

javascript - 用三个数字创建一个百分比

Javascript RegExp 替换为负前瞻

javascript - 如何显示jquery日期选择器?

javascript - 无限 setInterval 即使它应该已经清除?

javascript - 调用 SetInterval 函数表达式

javascript - 计算数组中两个元素小于或等于总和值的次数 - Javascript

javascript - 在 Electron/NodeJS 应用程序中捕获命令行响应

javascript - body 标签可以容纳乘法 onload ="setInterval()"吗?