javascriptfunction aa(){ var result = []; $.getJSON('js/json.json',function(data){ result = data; }); return result; } var bb = aa(); console.log(bb); //这里返回[],而不是data的值
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
ajax是异步的,所以aa()在执行的时候,return的那个result本身就是空的,在此后的某些秒以后,result才会有赋值。
改写可以用callback形式,或者用promise等等
$.getJSON是$.ajax的简写形式,默认是异步,当ajax发送请求时后面的return语句会继续执行,不会等待ajax返回数据才继续执行后面的语句,所以这里要把ajax请求设置为同步的,建议使用$.ajax
js是异步的,不会按照代码的顺序来执行,你ajax请求的时候,其实bb = aa()已经执行了,所以结果是[]
function aa(){
return $.getJSON('json.json');
}
aa().then(function(data){
console.log(data);
},function(error){});
用promise比较好理解