Javascript意外的运行顺序

时间:2017-12-16 05:15:53

标签: javascript jquery

我在下面有这个jquery / javascript代码。它询问用户的位置权限,然后输出一个末尾附加了纬度的URL字符串。

我放了3个console.log状态网来强调问题,我得到当前输出。

预期的调试值(按顺序)

  

1_lat = 95.555555

     

2_lat = 95.555555

     

3_https://fcc-weather-api.glitch.me/api/current&安培; LAT = 95.555555

实际调试值:(按顺序)

  

2 _

     

3_https://fcc-weather-api.glitch.me/api/current&安培;

?      

1_lat = 95.555555

{{1}}

我一定不能理解javascript如何加载以及jQuery document.ready.function如何影响结果。

1 个答案:

答案 0 :(得分:1)

navigator.geolocation是异步的。因此,您必须等待navigator.geolocation.getCurrentPosition回调函数才能处理latlng

您可以这样做:

var curLat ='';
var curLon ='';
var weatherAPI='';

$(document).ready(function(){

  if (navigator.geolocation){
    navigator.geolocation.getCurrentPosition(function(position){
      curLat = "lat=" + position.coords.latitude;
      console.log("1_", curLat);
      weatherAPI = getURL(curLat);
      console.log("3_", weatherAPI);
    });
  } 
});

function getURL(lat){
  console.log("2_", lat);
  var url =  "https://fcc-weather-api.glitch.me/api/current?";
  url = url + "&" + lat;
  return url;
}

这将导致:

1_ lat=1.xxx 
2_ lat=1.xxx 
3_ https://fcc-weather-api.glitch.me/api/current?&lat=1.xxx