Der Grund dafür Option A y Option B dass sie gleich zu funktionieren scheinen, liegt vor allem daran, dass die Orte der setInterval
y el setTimeout
Funktionen.
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
Dies ist eine rekursive Funktion, und wenn doStuff
ist sehr komplex, setTimeout
muss den Überblick über alle Aufrufe der setTimout
plus die aktuelle doStuff
was es zu einem Langsamer y s l o w e r .
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
Auf der anderen Seite ist die setInterval
muss nur noch die letzte setInterval
und die aktuelle doStuff
so dass der Aufenthalt in einem Konstante Geschwindigkeit.
Welche sollten Sie also verwenden?
Aus den obigen Ausführungen können Sie wahrscheinlich schließen, dass die bessere Lösung die folgende ist setInterval
.
6 Stimmen
Wenn Sie möchten einige gute Details, wie Timer in JS arbeiten, schrieb John Resig eine gute Artikel zu diesem Thema
9 Stimmen
Es gibt auch den offensichtlichen Unterschied, dass setTimeout diese zusätzliche Codezeile erfordert, um sie weiterzugeben, was den Nachteil hat, dass es ein Wartungsproblem ist, aber den Vorteil, dass Sie den Zeitraum leicht ändern können
0 Stimmen
Versuchen Sie dies jsfiddle.net/pramendra/Y4vEV
4 Stimmen
Danke @JapanPro, aber ich hatte noch nie ein Problem damit, dass Timeouts funktionieren. In diesem Beitrag ging es darum, was der Unterschied ist und was verwendet werden sollte.
0 Stimmen
Link aktualisieren. Die Bearbeitungswarteschlange ist voll setTimeout VS setIntervall