Ich beziehe mich auf das . Alles ist noch nicht klar.
fillTree()
, die einen Baum aktualisiert, hat Kontrollkästchen. checkSelectedBoxes()
, die auf window.onload
ausgeführt wird und nach ausgewählten Checkboxen sucht. Meine Frage:
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?
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.
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:
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.
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?
Tags und Links javascript