Asynchrone JavaScript-Funktionen synchron aufrufen
Ihre Anforderung, asynchrone Aufrufe synchron durchzuführen, ohne dass die Benutzeroberfläche einfriert, stellt ein einzigartiges und herausforderndes Problem dar. Leider ist es nicht möglich, die Ausführung von JavaScript zu blockieren, ohne die Benutzeroberfläche anzuhalten.
Eine mögliche Lösung besteht darin, globale Variablen für den Datenaustausch zu verwenden. Der Rückruf vom asynchronen Aufruf kann eine globale Variable ändern, die die gewünschten Daten enthält. In der Zwischenzeit überprüft ein Abfragemechanismus die globale Variable in regelmäßigen Abständen, bis die Daten verfügbar sind.
function doSomething() { window.data = null; // Clear global data myAsynchronousCall(param1, callBack); var intvl = setInterval(function() { if (window.data) { clearInterval(intvl); console.log(window.data); } }, 100); } function callBack(d) { window.data = d; }
Angesichts des von Ihnen angegebenen Beispiels wäre es jedoch eine geeignetere Lösung, Best Practices zu befolgen und einen Rückruf zu übergeben Funktion an doSomething():
function doSomething(func) { function callBack(d) { func(d); } myAsynchronousCall(param1, callBack); } doSomething(function(data) { console.log(data); });
Durch die Übergabe einer Funktion an doSomething() können Sie asynchrone Aufrufe korrekt nutzen, ohne auf fragwürdige Techniken zurückgreifen zu müssen.
Das obige ist der detaillierte Inhalt vonWie kann ich asynchrone JavaScript-Funktionen effektiv aufrufen, ohne die Benutzeroberfläche zu blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!