Heim > Web-Frontend > js-Tutorial > Hauptteil

Können asynchrone JavaScript-Funktionen synchron ausgeführt werden, ohne dass die Benutzeroberfläche einfriert?

Patricia Arquette
Freigeben: 2024-11-16 18:40:03
Original
778 Leute haben es durchsucht

Can Asynchronous JavaScript Functions Be Executed Synchronously Without Freezing the UI?

Synchronisierte Ausführung asynchroner JavaScript-Funktionen

In bestimmten Situationen kann es notwendig sein, asynchrone JavaScript-Funktionen synchron auszuführen, ohne jedoch die Benutzeroberfläche einzufrieren . Obwohl dies im Allgemeinen nicht als bewährte Vorgehensweise gilt, gibt es bestimmte Fälle, in denen es als notwendig erachtet werden kann.

Die Herausforderung

Das Ziel besteht darin, die Funktion bis zum Rückruf zu blockieren aufgerufen wird, ohne dass die Benutzeroberfläche einfriert. Dies stellt eine Herausforderung dar, da das Blockieren von JavaScript normalerweise zum Einfrieren der Benutzeroberfläche führt.

Mögliche Lösung

Eine mögliche Lösung besteht darin, mithilfe von Polling eine globale Variable zu überprüfen, die durch den Rückruf festgelegt wird . Hier ist ein Beispiel:

function doSomething() {

  // Callback sets received data to a global variable
  function callBack(d) {
    window.data = d;
  }

  // Start the async
  myAsynchronousCall(param1, callBack);
}

// Start the function
doSomething();

// Clear the global data
window.data = null;

// Poll at an interval until data is found in the global
var intvl = setInterval(function() {
  if (window.data) {
    clearInterval(intvl);
    console.log(data);
  }
}, 100);
Nach dem Login kopieren

Dieser Ansatz ermöglicht es der aufrufenden Funktion, zu blockieren, bis die Daten vom Rückruf empfangen werden, ohne dass die Benutzeroberfläche einfriert. Es wird jedoch davon ausgegangen, dass die Funktion doSomething() geändert werden kann, um die globale Variable zu verwenden.

Best Practice

Es ist wichtig zu beachten, dass dieser Ansatz als suboptimal angesehen wird Lösung. Im Idealfall sollten asynchrone Aufrufe mithilfe von Rückrufen oder Versprechen abgewickelt werden, anstatt die Funktion zu blockieren. In bestimmten Codebasen, die nicht einfach geändert werden können, kann dies jedoch als vorübergehende Problemumgehung erforderlich sein.

Das obige ist der detaillierte Inhalt vonKönnen asynchrone JavaScript-Funktionen synchron ausgeführt werden, ohne dass die Benutzeroberfläche einfriert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage