Müssen Sie bei Verwendung von setTimeoutTimeout löschen?

87

Jemand hat mir gesagt, dass Sie setTimeoutes löschen müssen , wenn Sie es verwenden clearTimeout. Ich kann verstehen, bevor das Timeout abläuft, aber warum danach? Oder ist es falsch?

NebulaFox
quelle

Antworten:

87

Es ist nicht wahr - es schadet nicht, eine Zeitüberschreitung nach Beendigung zu löschen, aber es ist nicht notwendig.

Gemäß der Spezifikation :

Wenn handle keinen Eintrag in der Liste der aktiven Timer des WindowOrWorkerGlobalScope-Objekts identifiziert, für das [clearTimeout] aufgerufen wurde, führt die Methode nichts aus.

Mit anderen Worten, es ist ein No-Op; Es passiert nichts und es wird kein Fehler ausgegeben.

jmar777
quelle
51

Sie müssen es nicht verwenden clearTimeout, sondern nur, wenn Sie das bereits festgelegte Zeitlimit abbrechen möchten, bevor es auftritt.

Es ist in der Regel mehr praktisch in der Anwendung clearIntervalmit , setIntervalweil setIntervalin der Regel auf unbestimmte Zeit läuft.

Madaras Geist
quelle
16

clearTimeoutist nur erforderlich, um eine Zeitüberschreitung abzubrechen. Nach dem Timeout kann es sicher in Ruhe gelassen werden. clearIntervalist viel typischer notwendig, um zu verhindern, dass es auf unbestimmte Zeit fortgesetzt wird.

gddc
quelle
10

Kein Grund, es zu löschen, nachdem es abgeschlossen ist. Ihr Freund könnte mit verwechselt worden sein setInterval.

Blazemonger
quelle
10

Nein, setTimeouthört nach 1 Anruf auf zu laufen. Um jedoch zu stoppen setInterval, müssen Sie verwenden clearInterval. Wenn Sie eine Endlosschleife von setTimeoutdann erstellen, clearTimeoutkönnte verwendet werden.

Trevor
quelle