所以我想使用$ .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 = '';
为了使其具有全局性,但它执行相同的操作,而不是得到未定义,而是得到一个空白字符串。我还认为,范围外日志优先出现的事实是问题的一部分。
我想念什么吗?如果可以,您能解释一下吗?还有另一种方法吗?
谢谢
编辑:我根据此答案在另一个线程上声明了“子计数” jQuery getJSON save result into variable
答案 0 :(得分:1)
基于此线程: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
}
现在我在以前的“范围内”和“范围外”得到相同的答案