Ich bin neu in Javascript, und Callbacks sind im Moment ein wenig blowing. Wie kann ich die Funktion teletyperDiologue in einen Rückruf umwandeln? Der Hauptgrund ist, dass ich möchte, dass der Teletyper seinen Job beendet, bevor die displayOut-Funktion beendet wird. Vielen Dank im Voraus für Ihre Hilfe.Wie kann ich dies in eine Callback-Funktion umwandeln?
function displayOut() {
\t
\t // images
\t document.getElementById("imgBox").style.backgroundImage = "url(" + db.rooms[roomLoc].roomImg + ")";
\t // Diologue box
\t diologueBox.innerHTML = ""; // Clear Box
\t teleTyperDiologue(db.rooms[roomLoc].description +
\t \t " The room contains: " +
\t \t \t (function() {
\t \t \t \t let x = "";
\t \t \t \t for (let i = 0; i < db.items.length; i++) {
\t \t \t \t \t if (db.items[i].location === roomLoc && db.items[i].hidden === false) {
\t \t \t \t \t \t x += db.items[i].name + ", "
\t \t \t \t \t }
\t \t \t \t }
\t \t \t \t x = x.slice(0, x.length -2);
\t \t \t \t if (x === "") {
\t \t \t \t \t x = " nothing of special interest";
\t \t \t \t }
\t \t \t \t return x;
\t \t \t })()
\t \t + ".");
};
// Teletyper for Diologue Box
function teleTyperDiologue(string) {
\t for (let i = 0; i < string.length; i++) {
\t \t setTimeout(function() {
\t \t \t diologueBox.innerHTML += string.slice(i, i + 1);
\t \t }, 5 * i);
\t }
}
die teleTyperDiologue Funktion hat ein Timer-Ereignis, so dass es immer ausgeführt wird, nachdem die Displayout Funktion beendet ist, können Sie versuchen, „Generatoren“ ist eine es6 Art der Funktion, die derzeit nicht unterstützt im heutigen Browser, aber Sie können sie in Babel, Typoskript transpilers kompilieren. –