以下是我要做的事情:
$.getJSON( "http://api.openweathermap.org/data/2.5/weather?lat="+latitude+"&lon="+longitude", function(data) {
fh = data;
});
我试图做一个
console.log(fh);
外 $。getJSON
是否可以在此功能之外获取 fh var? 我尝试这个并在控制台上显示错误:
未捕获的ReferenceError:fh未定义
答案 0 :(得分:1)
您应该创建fh
作为全局变量,然后允许在getJSON
方法中更新并在方法外部访问。
在从服务器的getJSON请求收到响应之前,它将等于undefined
。
出于这个原因,为了使其正常工作,您应该使用setTimeout
。在实践中,您应该使用promises
,但这可能超出了问题的范围。只要服务器在2秒内响应,fh
的值将被设置为从服务器返回的数据。
下面的代码说明了这一点。
var fh;
$.getJSON("http://api.openweathermap.org/data/2.5/weatherlat=" + latitude + "&lon=" + longitude, function(data) {
fh = data;
});
setTimeout(function(){
console.log(fh)
}, 2000);
答案 1 :(得分:0)
这个非阻塞代码,以便您必须等待回调执行
$.getJSON( "http://api.openweathermap.org/data/2.5/weather?lat="+latitude+"&lon="+longitude", function(data) {
fh = data;
console.log(fh);
});
答案 2 :(得分:0)
如果您需要在外面使用fh来处理逻辑中的某些内容
你可以使用setInterval函数
var fh=null;
$.getJSON("http://api.openweathermap.org/data/2.5/weatherlat="+latitude+"&lon="+longitude", function(data) {
fh = data;
});
var interval=setInterval(function(){
if(fh!=null){
console.log(fh)
clearInterval(interval)
}
},500)
答案 3 :(得分:0)
在Side功能中,我们需要设置值
localStorage.setItem('fhname',fh);
外部函数,我们需要获取值
localStorage.getItem('fhname');