2017-01-27 108 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' is asynchronous –

+0

那麼這意味着沒有必要把它放到全局變量中嗎? – DazedNConfused

+1

不需要?沒有點更像它 –

回答

4

navigator.geolocation.getCurrentPosition是異步的 - 你進入它作爲一個參數的函數是回調函數,這之後getCurrentPosition已成功完成執行。從Mozilla的文檔:

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

的JavaScript代碼的回調函數之外的其餘部分將繼續無需等待回調函數來運行,這就是爲什麼你看到的1的順序來執行,2,4, 3.

+0

非常感謝。 – DazedNConfused