[英]How to wait for function to stop before calling it again
在再次调用 function 之前,我无法尝试完成它。 现在这是我的代码:
function TypeAnimation(str, time)
{
var text = document.getElementById('loading');
for (let i = 0; i < str.length; i++) {
let k = i;
setTimeout(function(){
text.innerHTML += str.charAt(i);
}, time * (k + 1));
}
}
function StartGame()
{
TypeAnimation('first line of text', 50)
TypeAnimation('next line of text but slower', 100)
}
window.onload = StartGame;
这样做时,我得到 output 作为finrset xlitne olf itenxte of text but slower 。
我已经尝试使用以下代码承诺:
function TypeAnimation(str, time)
{
return new Promise((resolve) => {
var text = document.getElementById('loading');
for (let i = 0; i < str.length; i++) {
let k = i;
setTimeout(function(){
text.innerHTML += str.charAt(i);
}, time * (k + 1));
}
resolve();
});
}
function StartGame()
{
TypeAnimation('first line of text', 50).then(TypeAnimation('next line of text but slower', 100))
}
window.onload = StartGame;
但是当我这样做时,我仍然得到相同的结果
最重要的是,我也尝试了同样的事情,但使用了不同的 StartGame()
async function StartGame()
{
await TypeAnimation('first line of text', 50)
TypeAnimation('next line of text but slower', 100)
}
同样的问题再次出现,我得到相同的 output
如果有帮助,这都是用 electron js 应用程序创建的。
您的代码不起作用,因为您在超时发生之前就解决了 promise
这样的方法会让事情变得更容易
async function TypeAnimation(str, time) { const text = document.getElementById('loading'); for (let i = 0; i < str.length; i++) { text.innerHTML += str.charAt(i); await wait(time) } } async function StartGame() { await TypeAnimation('first line of text', 50) await TypeAnimation('next line of text but slower', 100) } StartGame() function wait(time) { return new Promise(r => setTimeout(r, time)) }
<span id="loading"></span>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.