从json文件推送后清除数组元素

时间:2015-08-10 21:13:36

标签: javascript

我有一个从JSON文件中读取整数的函数,并返回这些数字的数组。当我打印数据时,它就在那里。但是,当我在返回之前检查数组的长度时,我的大小为0.为什么?

function readJSON() {
    var arr = [];
    $.getJSON('foo.json', function(obj) {
        for(i = 0; i < obj.length; i++) {
            arr.push(obj[i]['_bar']);
            // Prints: 1 2 3 4 5
            console.log(obj[i]['_bar']);
        }
    });
    // Prints 0
    console.log(arr.length);
    return arr;
}

2 个答案:

答案 0 :(得分:1)

传递给getJSON的函数在对服务器的调用完成时(几乎可以肯定)在返回发生之前完成异步运行。

答案 1 :(得分:1)

它应该打印0.因为它是getjson是异步函数 你可以用这个

$.ajax({
    url: "myurl",
    async: false,
    success:function(obj) {
            for(i = 0; i < obj.length; i++) {
                 arr.push(obj[i]['_bar']);
                 // Prints: 1 2 3 4 5
                  console.log(obj[i]['_bar']);
            }
})

这将从服务器发出同步请求。 (在完成ajax操作请求并接收数据之前不会继续)