我有一个从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;
}
答案 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操作请求并接收数据之前不会继续)