2017-01-27 6 views
0

私はnavigator.geolocationを使用して経度と緯度を取得し、グローバル変数に格納することに問題がありました。私は別の場所でアラートを使用して、javascriptコードのフローを確認しました。 1、2、4、3となることがわかりました。それはなぜですか?私は本当に混乱しています。javascript - navigator.geolocationでのコードの実行順序

$(document).ready(function() { 
     var latitude; 
     var longitude; 
     alert('1'); 
     if(navigator.geolocation){ 
     alert('2'); 
      navigator.geolocation.getCurrentPosition(function(position){ 
       alert('3'); 
       latitude = position.coords.latitude; 
       longitude = position.coords.longitude; 
       geoCoords(latitude, longitude); 


      }); 
     } 

     alert('4'); 

    }); 
+2

'navigator.geolocation.getCurrentPosition'は非同期です –

+0

これはグローバル変数に入れる必要がないということですか? – DazedNConfused

+1

不要ですか?それ以上の点はありません –

答えて

4

navigator.geolocation.getCurrentPosition非同期です - あなたは、引数としてそれに渡す機能がgetCurrentPositionが正常に完了した後に実行されるコールバック関数です。 Mozillaのドキュメントから:コールバック関数の外のJavaScriptコードの残りの部分は、あなたが1の順序を参照してください理由で実行されるコールバック関数を待たずに実行を継続します

navigator.geolocation.getCurrentPosition(success[, error[, options]]) 

、2、4、 3.

+0

ありがとうございました。 – DazedNConfused