Heim >Web-Frontend >js-Tutorial >Wie „synchronisiere' ich asynchrone Javascript-Aufrufe?
Asynchrone JavaScript-Aufrufe synchronisieren
Einführung
Asynchrone JavaScript-Funktionen ermöglichen es uns, Aufgaben gleichzeitig auszuführen ohne den Hauptthread zu blockieren. In bestimmten Szenarien kann es jedoch erforderlich sein, eine asynchrone Funktion synchron aufzurufen, wodurch die aktuelle Ausführung effektiv blockiert wird, bis die Aufgabe abgeschlossen ist.
Implementierung
Im Gegensatz zur gängigen Meinung Meiner Meinung nach ist es unmöglich, die asynchrone Ausführung von JavaScript wirklich zu blockieren, ohne die Benutzeroberfläche zu beeinträchtigen. Ein Ansatz zum Simulieren einer Blockierung besteht darin, eine globale Variable abzufragen und darauf zu warten, dass sie von der Callback-Funktion festgelegt wird.
function doSomething() { // Global variable for callback data window.data = null; function callBack(d) { window.data = d; } // Start asynchronous call myAsynchronousCall(param1, callBack); // Start polling interval var intvl = setInterval(function() { if (window.data) { clearInterval(intvl); console.log(data); } }, 100); }
Obwohl diese Methode ein halbblockierendes Verhalten erreicht, ist sie nicht ideal, da sie dazu führen kann zu erheblichem Leistungsaufwand.
Bevorzugte Lösung
Wenn möglich, ist es vorzuziehen, eine Rückruffunktion an den asynchronen Aufruf zu übergeben und ihn das Ergebnis verarbeiten zu lassen, wenn er bereit ist:
function doSomething(func) { function callBack(d) { func(d); } myAsynchronousCall(param1, callBack); } doSomething(function(data) { console.log(data); });
Dieser Ansatz vermeidet den Abfrageaufwand und ermöglicht eine effizientere asynchrone Verarbeitung.
Das obige ist der detaillierte Inhalt vonWie „synchronisiere' ich asynchrone Javascript-Aufrufe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!