12.07.2022, 15:01
Nach der while-Schleife kommt weiterer Code, der erst nach dem Ende der Schleife durchlaufen werden darf. Wenn ich es richtig verstehe, läuft setInterval synchron, sodass der nachfolgende Code sofort bzw. zeitgleich zum Code in setInterval ausgeführt wird.
Was ich bräuchte ist eine sleep-Funktion, die javascript aber nicht anbietet.
Ich habe mittlerweile aber eine Möglichkeit gefunden, eine sleep-Funktion mit Hilfe eines Promise zu simulieren:
Jetzt läuft die Anzeige der Buchstaben korrekt.
Durch das Stoppen und Zurücksetzen der Soundausgabe ist auch diese besser geworden, aber noch nicht ganz das Gelbe vom Ei. Zu Beginn der Schleife, wenn das Intervall noch klein ist, wird der Klang nur sporadisch abgespielt.
Hier wäre ich über weitere Ideen dankbar.
Was ich bräuchte ist eine sleep-Funktion, die javascript aber nicht anbietet.
Ich habe mittlerweile aber eine Möglichkeit gefunden, eine sleep-Funktion mit Hilfe eines Promise zu simulieren:
Code:
<script>
const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))
async function startCountdown() {
...
// Run the countdown
startTime = new Date().getTime(); // Get the starting point of the current interval
while (!countdownFinished) {
let currTime = new Date().getTime(); // Get the current time stamp
if (currTime - startTime >= soundInterval) {
if (totalTime < TOTAL_TIME_MAX) {
if (soundClack.currentTime < soundClack.duration) {
soundClack.pause();
soundClack.currentTime = 0;
}
soundClack.play();
...
await sleep(2);
}
else {
...
}
}
}
}
</script>
Jetzt läuft die Anzeige der Buchstaben korrekt.
Durch das Stoppen und Zurücksetzen der Soundausgabe ist auch diese besser geworden, aber noch nicht ganz das Gelbe vom Ei. Zu Beginn der Schleife, wenn das Intervall noch klein ist, wird der Klang nur sporadisch abgespielt.
Hier wäre ich über weitere Ideen dankbar.