为了账号安全,请及时绑定邮箱和手机立即绑定

定义一个方法,返回ajax的返回值,这么写有什么问题?

定义一个方法,返回ajax的返回值,这么写有什么问题?

HUX布斯 2019-04-13 08:36:20
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的值
})
                            
查看完整回答
反对 回复 2019-04-13
?
Helenr

TA贡献1780条经验 获得超3个赞

$.getJSON是$.ajax的简写形式,默认是异步,当ajax发送请求时后面的return语句会继续执行,不会等待ajax返回数据才继续执行后面的语句,所以这里要把ajax请求设置为同步的,建议使用$.ajax
functionaa(){
varresult=[];
$.ajax({
url:'js/json.json',
async:false,
success:function(data){
result=data;
}
});
returnresult;
}
varbb=aa();
console.log(bb);
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 336 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信