当前位置: 首页 > 知识库问答 >
问题:

将getJSON数据存放在全局var中,但后来说它未定义

巫马泰
2023-03-14
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上基于这个答案声明了'subcount'

共有1个答案

阎知
2023-03-14

基于这个线程:是否可以将async:false设置为$.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
        }

现在我在前面的“范围内”和“范围外”中得到了相同的答案

 类似资料:
  • 问题内容: 我正在使用angularjs编写示例应用程序。我在chrome浏览器上遇到以下错误。 错误是 错误:[ng:areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined 呈现为 参数“ ContactContr

  • 问题内容: 我遇到下面显示的行未将变量存储到全局范围的问题: 我究竟做错了什么?我需要将其包装到单独的函数中还是什么? 问题答案: 该代码在收到响应之前运行。 这就是为什么。 在这里,您可以看到警报发生故障。默认情况下,AJAX请求不会阻止后续代码运行。 这就是拥有 回调 方法的全部目的。该方法在适当的时间被调用,而不是依赖于同步执行。

  • 本文向大家介绍请你说一说STL中MAP数据存放形式?相关面试题,主要包含被问及请你说一说STL中MAP数据存放形式?时的应答技巧和注意事项,需要的朋友参考一下 红黑树。unordered map底层结构是哈希表

  • 问题内容: 我正在使用angularjs编写示例应用程序。我在chrome浏览器上遇到以下错误。 错误是 错误:[ng:areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined 呈现为 参数“ ContactContr

  • 我正在使用下面的gql查询生成一个GraphQL请求。 但是当我在下面的代码中注销它时,它返回未定义的。 知道我做错了什么吗?该怎么纠正?

  • 问题内容: 我是DDD的新手,并且正在尝试将其应用于现实生活中。毫无疑问,此类验证逻辑(如空检查,空字符串检查等)直接进入实体构造函数/属性。但是,如何验证某些全球规则(例如“唯一用户名”)呢? 因此,我们有实体用户 和用户存储库 选项有: 将存储库注入实体 将存储库注入工厂 在域服务上创建操作 ??? 并且每个选项都更加详细: 1。将存储库注入实体 我可以查询实体构造函数/属性中的存储库。但是我