同步非同步JavaScript 呼叫
簡介
非同步函數允許我們同時執行任務而執行任務而不阻塞主線程。然而,在某些場景下,可能需要同步呼叫非同步函數,從而有效地阻塞目前執行,直到任務完成。
實作
與流行的相反相信,不可能真正阻止 JavaScript 非同步執行而不影響 UI。模擬阻塞的一種方法是輪詢全域變量,等待回調函數設定它。
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); }
雖然這種方法實現了半阻塞行為,但它並不理想,因為它可能會導致導致顯著的性能開銷。
首選解決方案
如果可能,最好將回調函數傳遞到非同步呼叫並讓它在準備好時處理結果:
function doSomething(func) { function callBack(d) { func(d); } myAsynchronousCall(param1, callBack); } doSomething(function(data) { console.log(data); });
這種方法避免了輪詢開銷並允許更有效率的非同步處理。
以上是如何「同步」異步 Javascript 呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!