1、问题概述?
在使用jQuery中的$.get或者$.ajax的时候,异步请求没有执行结束,异步请求后面的代码就执行了,这是为什么呢?代码如下:
var events=[];
$.get('/test/getStudentInfo',function(msg){
alert("===1===>");
});
alert("===2===>");
上面的代码大概率是alert("===2===>");先执行,alert("===1===>");后执行。
原因很简单:因为异步请求和同步请求不同,具有异步性,下面的代码不会等待上面的代码执行结束。
2、怎么办?
但是在开发的过程中,我们往往可能需要用到异步请求中的数据,这个时候的解决办法有两种。
【第一种解决办法】
将其他的逻辑代码写入到异步请求内
var events=[];
$.get('/test/getStudentInfo',function(msg){
alert("===1===>");
alert("===其他的代码执行逻辑===>");
});
【第二种解决办法】
异步请求工具是可以发送同步请求的,且效果相同,写法如下:
$.ajax({
type:"",
url:"",
async:false,//值为true表示异步,只为false表示异步
cache:false,
dataType:"json",
data:{"":""},
success:function(data){
},
error:function(data){
}
});