Steht JavaScript setTimeout für die Ausführung eines anderen Skripts?

8

Ich beziehe mich auf das . Alles ist noch nicht klar.

  • Ich habe eine JS-Funktion fillTree() , die einen Baum aktualisiert, hat Kontrollkästchen.
  • Ich habe eine andere Funktion checkSelectedBoxes() , die auf window.onload ausgeführt wird und nach ausgewählten Checkboxen sucht.
  • Jetzt sind viele andere Funktionen verbunden.

Meine Frage:

  • Wenn ich setTimeout() verwende, wird die andere Skriptfunktion ebenfalls anhalten und warten, bis meine Funktion fertig geladen ist?

Was könnte der Fall sein?

%Vor%

Dies gibt mir Nullwerte zurück, selbst nachdem das Zeitintervall erhöht wurde. Unterbindet fillTree() die Ausführung?

    
Umesh Moghariya 21.04.2012, 10:10
quelle

4 Antworten

9

Nein, setTimeout wartet nicht auf Sie (daher hat JS keine Pausenfunktion). Was setTimeout tut, wird diese Aufgabe zu einem späteren Zeitpunkt beiseite lassen und die Ausführung der nächsten Zeile erlauben. Wenn dieses Zeitlimit erreicht ist, fügt es diese Task in die Ausführungszeile ein. Wenn kein anderer Code ausgeführt wird, führt es die angegebene Funktion aus.

Was Sie tun möchten, ist ein Rückruf an Ihre fillTree() und führen Sie es aus, wenn es fertig ist.

%Vor%     
Joseph 21.04.2012, 10:13
quelle
1
  

es ist ein CMS ich benutze und der Baum ist in einer anderen js-Datei, die ich nicht stören sollte, da es viele andere Funktionen verwendet wird und die Fälle möglicherweise nicht immer die gleichen

Wenn die Funktion fillTree() nicht geändert werden kann, können Sie sie in Ihre eigene Funktion einfügen und eine Callback-Funktion darauf anwenden. Versuchen Sie Folgendes:

%Vor%     
Rory McCrossan 21.04.2012 10:18
quelle
0

Die setTimeout -Funktion wartet nicht auf die Ausführung, und Sie können sie im folgenden Code-Schnipsel überprüfen. Sie können sehen, wie das waitTimes der zufälligen Zeiten die Array.map Funktion zuerst alle time[index]=waitTimes[index] Werte ausgibt, dann die wait[index]=waitTimes[index] wenn die setTimeout genau nach waitTimes[index] Millisekunden abgefeuert wird.

%Vor% %Vor%
    
loretoparisi 17.04.2016 22:36
quelle
0

Ich habe gerade einen Test gemacht, der von Interesse sein könnte:

%Vor%

Ich bin jetzt wirklich neugierig, wie JavaScript nach Ablauf einer gewissen Zeit weiß. Entsteht ein Thread, der für eine bestimmte Zeit schläft? Und wenn ja, gibt es eine Grenze dafür, wie viele Threads schlafen oder sind schlafende Threads "gespeichert", bis sie benötigt werden? Viel Verwirrung.

Ich denke, es hat etwas mit

zu tun
  

"Wenn es nicht genau 1s sein muss, dann schlafe einfach eine Sekunde.   Schlaf und Schlaf bringen den aktuellen Thread in einen effizienten Wartezustand   das ist zumindest die Menge an Zeit, die Sie angefordert haben (und dann wird es   wieder eingeplant werden können).

     

Wenn Sie nicht versuchen, in die Nähe der genauen Zeit zu kommen, brauchen Sie das nicht zu überprüfen   Uhr (). "

- Pthread-Schlaf-Funktion, CPU-Verbrauch

Ich schätze also, dass das Betriebssystem die Planung für Sie vornimmt, zu welchem ​​Zeitpunkt es die Engine unterbricht und die Engine die Welt stoppt und die Timeout-Funktion so schnell wie möglich an die Spitze der Warteschlange stellt, um sie so schnell wie möglich auszuführen?

    
Dmitry 15.08.2016 05:05
quelle

Tags und Links