Heim > Artikel > Web-Frontend > Was ist der Unterschied zwischen Mikrotask-Warteschlange und Rückrufwarteschlange in asynchronem JavaScript?
In asynchronem JavaScript gibt es zwei Möglichkeiten, Aufgaben zu planen: Microtask Queue und Callback Queue. Die JavaScript-Engine behandelt diese beiden Warteschlangen unterschiedlich.
Microtask Queue ist eine Aufgabenwarteschlange, die nach der aktuellen Aufgabe ausgeführt wird. Die Mikrotask-Warteschlange wird von der JavaScript-Engine verarbeitet, bevor zur nächsten Aufgabe in der Rückrufwarteschlange übergegangen wird.
Hier ist ein Beispiel für die Funktionsweise der Mikrotask-Warteschlange -
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> console.log('start'); setTimeout(function() { console.log('setTimeout'); }, 0); Promise.resolve().then(function() { console.log('promise resolve'); }); console.log('end'); </script> </body> </html>
Im obigen Beispiel wird der Rückruf „setTimeout“ zur Rückrufwarteschlange hinzugefügt. „Promise.resolve“ wird zur Mikrotask-Warteschlange hinzugefügt. Die JavaScript-Engine führt zunächst alle Aufgaben in der Mikrotask-Warteschlange aus, bevor sie in die Rückrufwarteschlange gelangt.
Die Ausgabe des obigen Codes lautet also (in der Konsole) -
start end promise resolve setTimeout
Callback Queue ist eine Warteschlange von Aufgaben, die nach der aktuellen Aufgabe ausgeführt werden. Die Rückrufwarteschlangewird von der JavaScript-Engine verarbeitet, nachdem alle Aufgaben in der Mikrotask-Warteschlange ausgeführt wurden.
Hier ist ein Beispiel dafür, wie die Rückrufwarteschlange funktioniert –
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> console.log('start'); setTimeout(function() { console.log('setTimeout'); }, 0); console.log('end'); </script> </body> </html>
Im obigen Beispiel wird der Rückruf ‘setTimeout‘ zur Rückrufwarteschlange hinzugefügt. Die JavaScript-Engine führt den Rückruf „setTimeout“ aus, nachdem der gesamte Code in der aktuellen Aufgabe ausgeführt wurde.
Die Ausgabe des obigen Codes lautet also (in der Konsole) -
start end setTimeout
Mikrotask-Warteschlange und Rückrufwarteschlange sind:
MikrotaskRückrufeDie Warteschlange wird von der JavaScript-Engine verarbeitet, nachdem alle Aufgaben in der Mikrotask-Warteschlange ausgeführt wurden.
CallbackQueue wird verarbeitet, nachdem die Mikrotask-Warteschlange leer ist.
RückrufeWarteschlange werden in derselben Ereignisschleife verarbeitet.
Vorteile der Microtask-WarteschlangeDas obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Mikrotask-Warteschlange und Rückrufwarteschlange in asynchronem JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!