我正在尝试用 JavaScript 模仿 LCD 面板来传递有关游戏的信息。字母一个接一个地出现,中间有一点延迟。当游戏需要显示消息时,它会调用该函数。
问题是,当在完成第一个字符串的显示之前再次调用该函数时,它会开始显示新字符串,从而混淆所有字母。
我需要找到一种方法来延迟第二个(或后续字符串)的显示,直到它完成第一个字符串的显示。
我尝试过使用setInterval,因为我认为它应该是同步的,但似乎不是。我不熟悉 Promise 或其他实现方式。
这是我正在使用的代码:
function updateMonitor(ujo, str) {
ujo.html('');
var currentIndex = 0;
intervalId = setInterval(function(){
ujo.text(ujo.text() + str.substring(currentIndex, currentIndex + 1))
currentIndex++;
// We've reached the end of the string, stop calling this function
if (currentIndex == str.length) clearInterval(intervalId);
}, 5);
}
您的字母
setInterval()
可能没问题。
在
setTimeout()
的末尾使用 updateMonitor()
,并且仅在
那个超时结束后再次调用
updateMonitor()
。