javascriptfunctionaa(){varresult=[];$.getJSON('js/json.json',function(data){result=data;});returnresult;}varbb=aa();console.log(bb);//这里返回[],而不是data的值
2 回答
智慧大石
TA贡献1946条经验 获得超3个赞
ajax是异步的,所以aa()在执行的时候,return的那个result本身就是空的,在此后的某些秒以后,result才会有赋值。改写可以用callback形式,或者用promise等等javascriptfunctionaa(callback){varresult=[];$.getJSON('js/json.json',function(data){result=data;callback(result);});}aa(function(bb){console.log(bb);//这里返回是data的值})
Helenr
TA贡献1780条经验 获得超3个赞
$.getJSON是$.ajax的简写形式,默认是异步,当ajax发送请求时后面的return语句会继续执行,不会等待ajax返回数据才继续执行后面的语句,所以这里要把ajax请求设置为同步的,建议使用$.ajaxfunctionaa(){varresult=[];$.ajax({url:'js/json.json',async:false,success:function(data){result=data;}});returnresult;}varbb=aa();console.log(bb);
添加回答
举报
0/150
提交
取消