在全局变量中存储 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'

中得到了相同的答案