Beim Lesen der JS-Ereignisschleife war ich neugierig, wo Web-APIs ausgeführt werden. Zum Beispiel, in diesem image, hat die rosa Box keinen Namen (sagt nur "Implementierung spezifisch"), so dass ich mich wundern wo diese Web-APIs ausgeführt werden. Die Aufrufliste, die Ereignisschleife und die Nachrichtenwarteschlange haben alle Namen. Ich habe auch Philip Roberts talk über die Ereignisschleife gesehen und er bezeichnet es einfach als "Web API".Javascript-Ereignisschleife: Wo werden Web-APIs ausgeführt?
Wenn also eine Web-API im Aufruf-Stack erreicht wird, wird sie ausgeführt und ausgeführt, während der Rest des Aufruf-Stacks ausgeführt wird. Aber wo soll dieser Web-API-Aufruf ausgeführt werden? Zum Beispiel, wenn es eine festgelegte Zeit von 5 Sekunden gibt, wo sitzt es für diese 5 Sekunden?
Ich bin mir nicht sicher, was Sie mit "Web-API" meinen, aber es ist genau das: einige native Code tun, was es tun soll. Im Beispiel des verknüpften Bildes ist dies die DOM-Rendering-Engine des Browsers. Im Falle eines setTimeout-Aufrufs handelt es sich nur um eine Warteschlange von Zeitüberschreitungen, die irgendwo im Speicher herumliegen und durch nativen Code in einer implementierungsspezifischen Weise verwaltet werden. – Bergi
@Bergi Okay, sagen Sie, das nächste Element in der Aufrufliste ist 'setTimeout' mit 5 Sekunden. Der Aufrufstapel wird nicht 5 Sekunden warten und dann mit dem Rest des Stapels fortfahren. 'setTimeOut' geht aus und wird irgendwo anders ausgeführt, während der Rest des Aufruf-Stacks weiter läuft. Aber * wo * und * wie 'setTimeout' ausgeführt wird, ist für mich unklar von dem, was ich versucht habe zu recherchieren. – AlanH
Eigentlich geht es nicht weg und wird woanders ausgeführt, es setzt den Rückruf einfach in eine Timer-Warteschlange und kehrt dann zurück. Aber ja, es könnte in einem Hintergrundthread fortfahren und dort für fünf Sekunden warten, oder es könnte auf andere Weise implementiert werden. Es spielt keine Rolle. Das ist die Aufgabe der Engine/des Browsers. Alles, was zählt, ist, dass der Rückruf nach fünf Sekunden in die Nachrichtenwarteschlange gestellt wird, um ausgeführt zu werden. – Bergi