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

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

Mary-Kate Olsen
發布: 2024-12-30 19:13:09
原創
919 人瀏覽過

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

如何在 JavaScript 中處理非同步回呼函數傳回

從同步方法中擷取值時,非同步回調函數帶來了挑戰。考慮以下程式碼片段,它嘗試從回呼函數中檢索位置值:

function foo(address) {
  geocoder.geocode({ 'address': address }, function (results, status) {
    results[0].geometry.location; // I want to return this value
  });
}

foo(); // result should be results[0].geometry.location; value
登入後複製

但是,嘗試直接傳回該值會導致「未定義」。隨後嘗試使用中間變數或回調傳遞也失敗了。

解決方案:回呼傳遞

在同步方法中從非同步回調函數傳回值是不可能的。相反,必須將回呼傳遞給非同步函數來接收回傳值。

function foo(address, fn) {
  geocoder.geocode({ 'address': address }, function (results, status) {
    fn(results[0].geometry.location);
  });
}

foo("address", function (location) {
  alert(location); // this is where you get the return value
});
登入後複製

在此修改後的程式碼中,foo 函數接受回呼 fn 來處理回傳值。然後,非同步函數 geocoder.geocode 將位置值作為參數傳遞給 fn。然後,回調函數可以根據需要使用位置值。

非同步程式設計注意事項

請記住,當內部函數呼叫是非同步時,所有封閉函數也必須是非同步的回傳回應。如果使用大量回調,請考慮使用像 Q 這樣的 Promise 程式庫來簡化流程。

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

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