gpt4 book ai didi

Javascript 意外的运行顺序

转载 作者:行者123 更新时间:2023-12-03 02:51:24 26 4
gpt4 key购买 nike

我下面有这个 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

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;
}

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

最佳答案

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

关于Javascript 意外的运行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47842732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com