首頁 > web前端 > js教程 > 主體

如何在不阻塞UI的情況下有效呼叫非同步JavaScript函數?

DDD
發布: 2024-11-16 11:39:03
原創
339 人瀏覽過

How Can I Effectively Call Asynchronous JavaScript Functions Without Blocking the UI?

同步調用非同步JavaScript 函數

您要求在不凍結UI 的情況下同步非同步調用,這是一個獨特且具有挑戰性的問題。不幸的是,在不停止 UI 的情況下阻止 JavaScript 執行是不可行的。

一種潛在的解決方案涉及使用全域變數進行資料交換。非同步呼叫的回呼可以修改包含所需資料的全域變數。同時,輪詢機制會定期檢查全域變量,直到資料可用。

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;
}
登入後複製

但是,根據您提供的範例,更合適的解決方案是遵循最佳實踐並傳遞回調函數到doSomething():

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

  myAsynchronousCall(param1, callBack);
}

doSomething(function(data) {
  console.log(data);
});
登入後複製

透過將函數傳遞給doSomething(),您可以正確利用非同步調用,而無需訴諸有問題的技術。

以上是如何在不阻塞UI的情況下有效呼叫非同步JavaScript函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板