首頁 > web前端 > js教程 > 如何使 JavaScript 中的非同步函數同步運作?

如何使 JavaScript 中的非同步函數同步運作?

Susan Sarandon
發布: 2024-11-18 03:31:02
原創
837 人瀏覽過

How Can I Make Asynchronous Functions Behave Synchronously in JavaScript?

非同步函數的同步呼叫

在某些特定場景中,可能需要強制非同步呼叫在同步程式碼庫中同步運作。雖然它通常不被認為是最佳實踐,但實現它的方法如下:

透過輪詢進行阻塞

首先,需要注意的是,真正阻塞JavaScript 執行緒而不需要凍結UI 是不可行的。但是,可以透過定期檢查非同步操作的完成來模擬阻塞。

function doSomething() {
  var data;

  function callback(d) {
    data = d;
  }

  myAsynchronousCall(param1, callback);

  // Poll until the data is set by the callback
  while (!data) {
    // Sleep for a short duration to avoid excessive polling
  }

  return data;
}
登入後複製

這種方法有效地阻塞呼叫函數,直到呼叫回調為止。然而,它需要頻繁的輪詢,效率很低。

基於回調的方法

更乾淨、更有效率的解決方案是向原始非同步傳遞一個回呼函數call.

function doSomething(callback) {
  myAsynchronousCall(param1, function(data) {
    callback(data);
  });
}
登入後複製

修改後的doSomething() 函數現在將回調作為參數,並將使用非同步呼叫傳回的資料。

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

此方法允許在同步程式碼中無縫處理非同步調用,而不會阻塞或過度輪詢。

以上是如何使 JavaScript 中的非同步函數同步運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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