首頁 > web前端 > js教程 > 非同步 JavaScript 函數可以強制同步執行嗎?

非同步 JavaScript 函數可以強制同步執行嗎?

DDD
發布: 2024-12-03 03:24:10
原創
675 人瀏覽過

Can Asynchronous JavaScript Functions Be Forced to Execute Synchronously?

非同步 Javascript 函數可以同步呼叫嗎?

雖然非同步程式設計在 Javascript 中很常見,但特定場景可能需要對現有同步函數進行同步呼叫程式碼庫。儘管承認這種方法的次優性質,但由於時間限制,可能有必要將非同步呼叫改造為更大的同步程式碼庫。

阻塞回呼函數

挑戰在於阻塞呼叫函數的執行,直到收到非同步函數的回呼。關鍵考慮因素包括:

  • 不可能阻止 UI:阻止 Javascript 運行時將不可避免地凍結 UI 體驗。
  • 輪詢全域變數: 另一種方法涉及輪詢由呼叫函數內的回調設定的全域變數。這可以使用間隔計時器來實現,重複檢查直到填充全域變數。

範例實作:

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

重構非同步合規性:

重構非同步合規性:

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

  myAsynchronousCall(param1, callBack);
}

doSomething(function(data) {
  console.log(data);
});
登入後複製
但是,值得注意的是,理想的方法剩下的就是修改呼叫函數並傳遞回調來處理非同步操作。這可以在不犧牲同步程式碼庫功能的情況下保持非同步完整性。

以上是非同步 JavaScript 函數可以強制同步執行嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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