在全局变量中存储 getJSON 数据,但后来说它是未定义的
Stock getJSON data in a global var but later says its undefined
所以我想使用 $.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 范围出来时,变量 returns 变为未定义状态。我尝试用
初始化它
subcount = '';
为了让它成为全球性的,但它做同样的事情,而不是未定义,我得到一个空字符串。我也认为超出范围的日志首先出现是问题的一部分。
我错过了什么吗?如果是这样,你能解释一下吗?还有其他方法吗?
谢谢
编辑:我在另一个线程上根据这个答案声明了 'subcount'
jQuery getJSON save result into variable
基于此线程:Is it possible to set async:false to $.getJSON call
我将 $.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
}
现在我在之前的 'In scope' 和 'Out of scope'
中得到了相同的答案
所以我想使用 $.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 范围出来时,变量 returns 变为未定义状态。我尝试用
初始化它subcount = '';
为了让它成为全球性的,但它做同样的事情,而不是未定义,我得到一个空字符串。我也认为超出范围的日志首先出现是问题的一部分。
我错过了什么吗?如果是这样,你能解释一下吗?还有其他方法吗?
谢谢
编辑:我在另一个线程上根据这个答案声明了 'subcount' jQuery getJSON save result into variable
基于此线程:Is it possible to set async:false to $.getJSON call
我将 $.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
}
现在我在之前的 'In scope' 和 'Out of scope'
中得到了相同的答案