首頁 > web前端 > js教程 > 如何從 JavaScript 中的非同步回呼函數傳回值?

如何從 JavaScript 中的非同步回呼函數傳回值?

Linda Hamilton
發布: 2024-12-27 01:15:09
原創
408 人瀏覽過

How Can I Return Values from Asynchronous Callback Functions in JavaScript?

非同步回呼:傳回值

由於非同步回呼函數的非阻塞性質,從非同步回調函數傳回值可能是一個挑戰。以下是問題的細分和解決方案:

在提供的範例中:

function foo(address) {
  // Google Maps stuff
  geocoder.geocode({'address': address}, function(results, status) {
    // Unable to return results[0].geometry.location synchronously
  });
}
登入後複製

在非同步地理編碼回調內,無法同步擷取您要傳回的值。嘗試這樣做將導致未定義的值。

解:回呼結果

要取得該值,您可以將回調函數傳遞給foo ,該函數將接收結果:

function foo(address, callback) {
  geocoder.geocode({'address': address}, function(results, status) {
    callback(results[0].geometry.location); 
  });
}
登入後複製

在foo的回調中,您可以存取該位置value:

foo("address", function(location) {
  alert(location); // Result obtained here
});
登入後複製

非同步函數鏈

如果非同步呼叫嵌套在另一個函數中,則該函數也必須是異步的才能取得回傳值。對於複雜的場景,可以考慮使用像 Q 這樣的 Promise 程式庫來有效地管理非同步操作。

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

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