Was ich habe versucht, eine Funktion schreiben zu tun wie:Wie eine JavaScript-Funktion schreiben, die gegebene Millisekunden
function delay(delay){
var date = new Date();
var startTime = date.getTime();
var currDate=new Date();
var current=currDate.getTime();
while (current<=startTime+delay){
currDate=new Date();
current=currDate.getTime();
}
}
Dieser Code perfekt zu funktionieren scheint, wenn etwas so
tutconsole.log("1");
delay(500);
console.log("2");
Wenn Sie so etwas tun, wird es auf die Konsole 1 ausgedruckt, warten Sie dann eine halbe Sekunde, und drucken Sie dann 2. Das Problem ist, dass ich nicht console.log möchte, möchte ich document.getElementById("id").innerHTML+="a";
. Beim Versuch, die Verzögerungsfunktion zu umgehen, wartet die Seite darauf, dass alle Verzögerungen beendet sind, bevor eine der AS geladen wird.
Meine Frage ist folgende:
Gibt es eine gute Möglichkeit, eine solche Funktion zu entweder schreiben, oder gibt es bereits eine Funktion, dass alle vorherigen Code ausführen lassen kann, verursachen eine bestimmte Verzögerung, und dann laufen der Code danach. Ich habe versucht, setTimeout
verwenden, aber das Problem ist, dass läuft so etwas wie diese:
console.log("1");
setTimeout(function(){
console.log("2");
}, 2000);
console.log("3");
Ergebnisse in es 1 gedruckt wird, dann 3 gedruckt wird, dann 2 Sekunden warten und Drucke 2 statt 1 zu tun, 2 Sekunden warten, Druck 2 Druck 3
Klarstellung: die Art, wie ich dies zu realisieren versuchen ist:
for (i=0;i<10;i++){
document.getElementById("text")+="a";
delay(500);
}
Was dieser Code sollte tun Druck einen Buchstaben zu einem Zeitpunkt, zu dem Bildschirm, mit einer halben Sekunde zwischen jedem Buchstaben drucken
Warum Sie 'console.log (3)' 'innen setTimeout', wenn Sie nicht hinzufügen will nicht, dass es vor '2' druckt? –