第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從異步回調函數(shù)返回值?

如何從異步回調函數(shù)返回值?

九州編程 2019-05-22 13:37:28
在SO中多次詢問這個問題。但我還是得不到東西。我想從回調中獲得一些價值。請查看下面的腳本以獲得說明。function foo(address){      // google map stuff      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如果我試圖返回該值只是“未定義”。我從SO那里聽了一些想法,但仍然失敗了。那些是:function foo(address){    var returnvalue;        geocoder.geocode( { 'address': address}, function(results, status) {        returnvalue = results[0].geometry.location;     })    return returnvalue; }foo(); //still undefined如何從異步回調函數(shù)返回值?
查看完整描述

3 回答

?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

這是不可能的,因為您無法從同步方法內的異步調用返回。

在這種情況下,您需要將回調傳遞給將接收返回值的foo

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});

問題是,如果內部函數(shù)調用是異步的,那么所有函數(shù)“包裝”此調用也必須是異步的,以便“返回”響應。

如果你有很多回調,你可以考慮采取措施并使用像Q這樣承諾庫


查看完整回答
反對 回復 2019-05-22
?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

從回調中返回值是沒有意義的。相反,回調中執(zhí)行“foo()”工作。

當事件發(fā)生時,瀏覽器或某些框架(如Google地理編碼庫)會調用異步回調。沒有返回值的地方。換句話說,回調函數(shù)可以返回一個值,但調用該函數(shù)的代碼不會注意返回值。


查看完整回答
反對 回復 2019-05-22
  • 3 回答
  • 0 關注
  • 1581 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號