Heim > Web-Frontend > js-Tutorial > Können asynchrone JavaScript-Funktionen zur synchronen Ausführung gezwungen werden?

Können asynchrone JavaScript-Funktionen zur synchronen Ausführung gezwungen werden?

DDD
Freigeben: 2024-12-03 03:24:10
Original
684 Leute haben es durchsucht

Can Asynchronous JavaScript Functions Be Forced to Execute Synchronously?

Können asynchrone Javascript-Funktionen synchron aufgerufen werden?

Während asynchrone Programmierung in Javascript üblich ist, können bestimmte Szenarien synchrone Funktionsaufrufe für vorhandene synchrone Funktionen erfordern Codebasen. Auch wenn man die suboptimale Natur dieses Ansatzes anerkennt, kann es aus Zeitgründen notwendig sein, asynchrone Aufrufe in eine größere synchrone Codebasis umzuwandeln.

Blockieren von Rückruffunktionen

Die Herausforderung besteht darin, die Ausführung der aufrufenden Funktion zu blockieren, bis der Rückruf von der asynchronen Funktion empfangen wird. Zu den wichtigsten Überlegungen gehören:

  • Unmöglichkeit, die Benutzeroberfläche zu blockieren: Das Blockieren der Javascript-Laufzeit führt unweigerlich zum Einfrieren der Benutzeroberfläche.
  • Abfragen globaler Variablen: Ein alternativer Ansatz besteht darin, eine vom Callback festgelegte globale Variable innerhalb der aufrufenden Funktion abzufragen. Dies kann mithilfe eines Intervall-Timers erreicht werden, der wiederholt prüft, bis die globale Variable gefüllt ist.

Beispielimplementierung:

function doSomething() {
  var data;

  function callBack(d) {
    window.data = d;
  }

  myAsynchronousCall(param1, callBack);

  // Start polling
  var intvl = setInterval(function() {
    if (window.data) {
      clearInterval(intvl);
      console.log(data);
    }
  }, 100);
}
Nach dem Login kopieren

Refactoring für Asynchrone Compliance:

Es ist jedoch zu beachten, dass der ideale Ansatz weiterhin darin besteht, den Aufruf zu ändern Funktion und übergeben Sie einen Rückruf, um den asynchronen Vorgang abzuwickeln. Dadurch bleibt die asynchrone Integrität erhalten, ohne die Funktionalität der synchronen Codebasis zu beeinträchtigen.

function doSomething(func) {
  function callBack(d) {
    func(d);
  }

  myAsynchronousCall(param1, callBack);
}

doSomething(function(data) {
  console.log(data);
});
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonKönnen asynchrone JavaScript-Funktionen zur synchronen Ausführung gezwungen werden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage