2013-06-22 103 views
1

我在函數回調方面遇到了一些麻煩,特別是HTML5地理定位API。我對Js也有點新鮮感。功能:返回回調函數的值?

function getInfo() 
{ 
    navigator.geolocation.getCurrentPosition(getPos); 
} 

需要一個函數的回調參數,該函數獲取傳入的位置。

function getPos(position) 
{ 
PositionObj.lat = position.coords.latitude; 
PositionObj.lon = position.coords.longitude; 
} 

我創建了一個「位置」對象來存儲座標,並且我無法返回它們。

var PositionObj = 
{ 
lat:null, 
lon:null, 
returnLat: function() 
      { 
      return this.lat; 
      }, 
returnLon: function() 
      { 
      return this.lon; 
      } 
}; 


function printStuff() 
{ 
getInfo(); 
console.log(PositionObj.returnLat()); 
} 

編輯:語法錯誤修正。當我調用printStuff()時,我仍然得到「null」。

+0

我沒有看到你從'getPos()'返回任何東西。這是問題嗎? – scarecrow

+2

我想你應該試試'getPos'(沒有'()')。您必須傳遞函數引用,而不是函數getPos的返回值。 –

回答

1

您的PositionObj文字不正確。初始屬性應該設置用冒號:

{ lat: '', lon: '' } 
2
  • 要傳遞的回調,只使用getPos,而不是調用函數的時候了。
  • 使用正確的語法在PositionObj中聲明屬性。

PositionObj = { 
    lat: null, 
    lon: null, 
} 
+0

謝謝!我認爲這是我做錯的第一件事,請你檢查一下我的編輯,看看有沒有其他的東西可能是錯的?似乎它應該工作。 – user2511705

+0

現在看到Kolink的答案。 – Koterpillar

1

回調應該告訴你,爲了獲得位置信息的請求是異步的。這意味着getInfo()不會立即設置值,因此以下行不能訪問「新」值。

任何依賴於異步函數結果的東西都必須在回調本身內。

+0

謝謝,你能舉個例子嗎?有沒有一種資源可以讓我學習Js中的異步和同步函數? – user2511705