一般的なjavascript

私はしばらくのうちにjsで書かれたhaventと明らかに少し錆びています。次の問題を理解しようとしています。 getCurrentPosition successCallback の警告は緯度を正しく示していますが、最後の行は undefined に警告します。関数外で呼び出したときにclient_location関数が緯度を返すのはなぜですか?

client_location = function() {
  if (navigator.geolocation) {
    return navigator.geolocation.getCurrentPosition(function(position) {
      alert(position.coords.latitude);  ## RETURNS LATITUDE CORRECTLY ##
      return position.coords.latitude;
    });
  }
};
alert(client_location());               ## RETURNS UNDEFINED ##
0
大佐の閉鎖。
追加された 著者 Dave Newton,

2 答え

3
追加された
インターフェースGeoLocation へのリンクは+1です。最終的な警告値が undefined で、何か恣意的でない理由を正確に示します。
追加された 著者 Ray Toal,
hm。私は単純な関数を書くことを試みていますが、私は緯度を返すように呼び出すことができますが、私はその関数に引数を渡す必要はありません。どのように私はclient_location関数にコールバックを渡す内在化できますか?
追加された 著者 brewster,
@レイ:私は権威のあるリファレンスを提供することを好みます。
追加された 著者 mu is too short,
@ brewster: getCurrentPosition は非同期であるため、うまく動作しません。したがって、 getCurrentPosition から結果をいつ取得するかはわかりません。非同期コールバックのアプローチに慣れておくことをお勧めします.AJAXと他の多くのAPIを使用しているときは、常にそれを処理する必要があります。
追加された 著者 mu is too short,

デバイスがジオロケーションを返さない場合は、未定義です。 ジオロケーションを扱うelseステートメントを追加します。

client_location = function() {
  if (navigator.geolocation) {
    return navigator.geolocation.getCurrentPosition(function(position) {
      alert("clientLocation: "+position.coords.latitude);
      return position.coords.latitude;
    });
  }else{
    return("no navigator.geolocation");  
  }
};
alert(client_location()); 
0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript