javascript - jQuery $.each 范围

标签 javascript jquery json

我已经检查了所有可用的问题,并且我知道在处理 jQuery 的 $.each 循环时存在一些奇怪的情况。我似乎不明白为什么在该范围之外声明但在该范围内初始化的变量也会丢失。我现在不处理 DOM,只是使用 getJSON 来提取一些数据并将其传递给其他函数以供以后使用。

这就是我想做的一切,但我完全感到困惑。

function getJSONData(){
    var ar = []; 

    $.getJSON('pathto.json', function(data){
            $.each(data, function(k,v){
            ar.push(k);   // lots of data in ar
        });     
    });

    return ar;  // ar is empty again.
}

对于那些无知的人来说,这里有什么线索吗?我已经尝试了我能想到的“this”的所有排列,并在 getJSON 循环中初始化 ar。

非常感谢!

最佳答案

getJSON 是异步的,因此该函数将在填充 ar 之前立即返回,您需要执行以下操作:

function getJSONData(callback){
    $.getJSON('pathto.json', function(data){
        var ar = []; 

        $.each(data, function(k,v){
            ar.push(k);   // lots of data in ar
        });   

        callback(ar);
    });
}

getJSONData(function(ar) {
    console.log(ar);
});

关于javascript - jQuery $.each 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688403/

相关文章:

javascript - jQuery aToolTip 插件只适用于链接的标题,我如何让它也适用于图像、字段和跨度的标题?

jquery - Zepto 中 jQuery.getScript() 的等价物是什么?

javascript - Vue.js 计时计算与纯 JavaScript 版本不匹配

javascript - jquery 文本字段转换为大写/小写

javascript - 如何从页面 Controller 访问指令中的dom元素

php - 如何通过包含 & 符号和/或换行符的 ajax 传递 textarea 数据?

javascript - 如何扩展 EJSON 以序列化 RegEx 以进行 Meteor 客户端-服务器交互?

javascript - 使用媒体查询并在之前编写的另一个 div 下方显示一个 div

javascript - JQuery:检查元素是否在正常流程中

javascript - 在 React 中将字符串转换为日期