关于ajax中return并不能作为方法的返回值

接下来关于ajax中的return值最后没有办法是方法的最终返回值问题

login(username,password)

{

console.log("进入方法");

$.ajax({

type:"POST",

url:"http://192.168.28.168:1314/api/Users/login",

dataType:"Json",

data:{

"username":username,

"password": password,

},

success:function(data){

console.log("调用接口成功")

console.log(data.statusCode);

return data.statusCode;

},

error:function(err){

console.log("调用接口失败");

status = 0;

}

});

}

 

我们能看到方法中明明return了但是 调试却发现 这个方法的返回值是defined

其实因为在ajax方法中return只是退出了ajax方法 并非是login方法的返回值

然后我们设置一个新的变量,然后在ajax内部赋值,最后在ajax方法外return试试

 

仍然不行

Ok这就涉及到ajax是异步行为,所以就是在return的时候ajax不一定拿到了值

 

 

我希望只有当status有数据的时候再返回

那其实这个思路就是错的因为是异步 的这个if只能判断一次不是反复判断的

也就是说在ajax拿到值之后也未必会在进入status判断

尝试用setState的方法结果发现setState 竟然打印的结果不同

 

 

最后的解决方案,换个思路,你未必一定要让你的方法有返回值可以把方法写在ajax的success函数中去。

 

 

posted @ 2018-08-24 16:33  sukidagala2018  阅读(4053)  评论(0编辑  收藏  举报