在全局var中存储getJSON数据,但后来表示其未定义



所以我想使用$.getJSON获取数据,并将其存储在一个变量中,以便以后使用。即使我在$.getJSON之前声明了变量"subcount",当我真正想对它做一些事情时,我也会将其作为未定义的

function loadSubs() {
channel_url = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id="+channelId+"&key="+key;
var subcount;
$.getJSON(channel_url, function(data) {
subcount = data.items[0].statistics.subscriberCount;
console.log("In scope: "+subcount);
});
console.log("Out of scope: "+subcount);
do_something_with_data();
}

控制台给我

Out of scope: undefined
In scope: 1364189

看起来,当它离开getJSON范围时,变量会返回到未定义的状态。我试着用初始化它

subcount = '';

为了使它全局化,但它做了同样的事情,我得到了一个空白字符串,而不是未定义。我还认为,范围外的日志首先出现是问题的一部分。

我是不是错过了什么?如果是,你能解释一下吗?有别的办法吗?

感谢

编辑:我在另一个线程上根据这个答案声明了"subcount"jQuery getJSON将结果保存到变量中

基于这个线程:是否可以将async:false设置为$.getJSON调用

我将$.getJSON更改为$.ajax,并放置async:false

function get_subcount(chan_url) {
var subcount;
$.ajax({
url:chan_url,
datatype:'json',
async:false,
success: function(data) {
subcount = data.items[0].statistics.subscriberCount;
}
});
return subcount
}

现在我在以前的"范围内"one_answers"范围外"中得到了相同的答案

相关内容

  • 没有找到相关文章

最新更新