Dieser Artikel vermittelt Ihnen relevantes Wissen über Javascript. Der Artikel bietet eine detaillierte Einführung in das Thema, auf die sich Freunde beziehen können, die sie benötigen.
🏜 Threaded, warum muss es sein? Was ist mit Single-Threaded? Dies hängt vom Nutzungsszenario ab. Es wird hauptsächlich verwendet, um Benutzern die Interaktion mit der Seite zu ermöglichen. Unter der Annahme, dass js multithreaded ist, klickt der Benutzer in diesem Thread auf eine Schaltfläche und ein DOM-Knoten wird hinzugefügt. In einem anderen Thread klickt der Benutzer auf die Schaltfläche und löscht einen DOM-Knoten Diesmal. Wessen. Was ist also der Grund für die Entstehung von Synchronität und Asynchronität? Vorausgesetzt, es gibt keine Asynchronität, kann es sein, dass die Daten aufgrund eines schlechten Netzwerks für eine lange Zeit hängen bleiben, wenn wir sie vom Server anfordern. Da die Webseite synchron ist, muss sie warten, bis die Datenanforderung zurückkommt Es kann weiterhin mit dem Benutzer interagieren. Dies führt dazu, dass die gesamte Webseite sehr beschäftigt ist und die Benutzererfahrung sehr schlecht ist.Ausführungsstapel und Aufgabenwarteschlange
Ausführungsstapel Reden wir nicht darüber, was der Ausführungsstapel ist, sondern darüber, was der Stapel ist. Der Stapel ist wie ein Eimer. Das Erste, was hineingelegt wird, muss das Letzte sein, was herausgenommen wird, was jeder oft als „Wer zuerst rein, zuletzt raus“ bezeichnet.
function fn (count) { if (count <= 0) return fn(count - 1) console.log(count) } fn(3)
Alle Aufgaben in js werden auf dem ausgeführt Hauptthread und bilden einen Ausführungsstapel .
(Bitte denken Sie daran!!!)Aufgabenwarteschlange
Dann sind die Warteschlange und der Stapel gegenüberliegend, die Warteschlange ist zuerst rein, zuerst raus. Tatsächlich ist es leicht zu verstehen, dass es dasselbe ist, als wenn wir uns normalerweise anstellen. Die Person, die zuerst in die Warteschlange kommt, wird definitiv zuerst herauskommen. Dann besteht das gängige Verständnis der Aufgabenwarteschlange darin, die Rückruffunktion asynchroner Aufgaben zu platzieren.
(Bitte denken Sie auch daran!!!)Synchronisierte Aufgaben und asynchrone Aufgaben
Zuerst einige konzeptionelle Dinge, um eine Grundlage zu legen:
Viele Menschen werden synchrone Aufgaben verstehen, wenn sie sie verstehen. Verwirrt durch ihre Semantik , Synchronisationsaufgaben werden nicht gleichzeitig ausgeführt. Es geht darum, auf das Ende der vorherigen Ausführungsaufgabe zu warten, bevor die nächste Aufgabe ausgeführt wird. Das ist hier nicht schwer zu verstehen, aber schreiben wir zur Erklärung einen einfachen Code: console.log(1)
console.log(2)
console.log(3)
Asynchrone Aufgaben
Lassen Sie uns nur ein Beispiel geben:console.log(1) setTimeout(() => { console.log(2) }, 1000) console.log(3)
Die Ausgabe dieses Codes unterscheidet sich von der Ausgabe des obigen synchronen Codes:
1, 3, 2Dies ist der asynchrone Code . Es wird nicht in der Reihenfolge der Ausführung ausgeführt
Wir können es auch offiziell zusammenfassen:Es macht nichts, wenn Sie es nicht verstehen. Es wird aufschlussreich sein, wenn wir später über die Ereignisschleife sprechen. Der Ausführungsmechanismus von js
Beginnen wir mit den unklareren Konzepten:
js一直从任务队列中取回调函数,然后放入主线程中执行,这是一个循环不断的过程,所以把它叫做事件循环。
这个还是要简单粗暴的来段代码会更直观一点:
const promise = new Promise((resolve, reject) => { console.log(1); setTimeout(() => { console.log("timerStart"); resolve("success"); console.log("timerEnd"); }, 0); console.log(2); }); promise.then((res) => { console.log(res); }); console.log(4);
现在我们根据上面的规则一步一步分析这段代码,如果不懂Promise也没有关系,我保证这并不影响你对事件循环的理解。现在你就把自己当成js代码的检察官,要正确把它们放在合适的“位置”
【相关推荐:javascript视频教程、web前端】
Das obige ist der detaillierte Inhalt vonSynchrone und asynchrone Aufgaben mit JavaScript-Ereignisschleife. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!