获得功能以外的价值

时间:2017-01-10 22:57:37

标签: javascript jquery

以下是我要做的事情:

$.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未定义

4 个答案:

答案 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');