Unterschied zwischen setTimeout (fn, 0) und setTimeout (fn, 1)?
Den jquery source Funktionen verwendet setTimeout
mit beiden 0
und 1
als zweites argument. Ich bin unter dem Eindruck, dass Sie beide bedeuten "führen Sie die Funktion aus, sobald Sie können".
Ist das richtig? Gibt es einen Unterschied zwischen den beiden?
InformationsquelleAutor der Frage Randomblue | 2011-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
setTimeout
hat eine minimale Wartezeit von 4ms. Es gibt also tatsächlich keine Unterschied zwischen den beiden.Spezifikation
EDIT: Wie bereits von Ahmad in den Kommentaren, die Skillung hat sich nun geändert, so die Antwort, wäre es derzeit, "Es hängt davon ab."
InformationsquelleAutor der Antwort Some Guy
Ich bin nicht sicher, ob die gegebenen Antworten richtig sind. Mit dem folgenden code in Chrome
0
ist eindeutig Aufruf der Funktion gebunden mehr schnell (schalten Sie einfach die timer-Werte zwischen0
und1
):0
zu tun scheint, so etwas wie NodeJS istsetImmediate
schob eine Anweisung an das Ende des aktuellen call-stack, während1
ruft, was die Umsetzung betrifft, als ein minimaler Wert.InformationsquelleAutor der Antwort Sandro Pasquali
Programmgesteuert und rechnerisch ist es ein Unterschied, aber ist es nicht ein Unterschied, den Sie sehen, wenn Sie es ausführen, wie es nur
1ms
.Ich könnte mir vorstellen, dass, wenn der timeout gesetzt, um
1ms
es Pausen, script und andere scripts laufen mittlerweile. Und wie Sie wahrscheinlich wissen, javascript ist Single-Threaded, so dass könnte ein Grund genau dort.EDIT:
Dank @molf wer korrigiert meine Gedanken, es würde scheinen, dass die Einstellung von 0ms ist bloß ein trick um es zum laufen in den nächsten tick von der Ereignis-Schleife.
InformationsquelleAutor der Antwort Jan Højriis Dragsbaek
Warum setTimeout(fn, 0) oder setTimeout(fn, 1) erforderlich ist, überprüfen Sie heraus Warum ist setTimeout(fn, 0) manchmal ist es nützlich?
Ist es im Grunde bedeutet, dass diese Methode ist nicht sehr dringend zu führen im Vergleich zu anderen browser-Aufgaben, wie das Rendern von Seiten. Außerdem, ist der js-code wird ausgeführt, nachdem die wartenden Aufgaben sind vorbei.
Praktischer Weise gibt es keinen Unterschied zwischen 0 oder 1. Dies ist nur programmer ' s choice. Im Idealfall ist die gewählte Nummer, die durch den Kodierer ist, unter 4, die eventuell aus dem Grund, darauf hingewiesen, von Amaan.
btw, für grundlegende Informationen über Javascript-Timer, siehe http://ejohn.org/blog/how-javascript-timers-work/
InformationsquelleAutor der Antwort sv_in
Es ist einfach ein Beispiel für schlechten code die Praxis in der jQuery-Quelle.
Das ist alles. Es gibt keinen Grund, zu Gunsten
0
über1
oder vica versa.Raise a jQuery bug, es fixiert /normalisiert auf die eine oder die andere.
InformationsquelleAutor der Antwort Raynos