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

Javascript 从json文件推送后清除的数组元素,javascript,Javascript,我有一个函数,它从JSON文件中读取整数并返回这些数字的数组。当我打印数据时,数据都在那里。但是,当我在返回之前检查数组的长度时,得到的大小是0。为什么? function readJSON() { var arr = []; $.getJSON('foo.json', function(obj) { for(i = 0; i < obj.length; i++) { arr.push(obj[i]['_bar']);

我有一个函数,它从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;
}
函数readJSON(){ var-arr=[]; $.getJSON('foo.json',函数(obj){ 对于(i=0;i传递给getJSON的函数在对服务器的调用完成时(几乎可以肯定)而不是在返回发生之前异步运行。

它应该打印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({
url:“我的url”,
async:false,
成功:功能(obj){
对于(i=0;i
这将从服务器发出同步请求。(直到完成ajax操作请求并接收数据后才能继续)

重复