Ajax请求中的异步与同步,需要注意的地方。

时间:2023-01-08 18:03:00

之前做项目时候,用到一个表格控件,它的数据是异步加载的,我在这个表格绑定数据的函数下面友做了一些业务处理,运行页面的时候,用浏览器在我写业务处理那地方打上断点跟踪,它确实执行了,可以最后显示的时候,它的处理被覆盖了,我很纳闷,当时也知道是这个表格绑定函数那出问题了,可是时间紧,它的函数是封装的,没有去具体跟踪,就直接让我的那部分业务处理延迟200ms执行,这样就好了,这是个笨法,不过也是个有效的办法,呵呵。

后来看了下文档,查了些资料,其实原理应该是这样的:

默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 

Ajax请求中的异步与同步,需要注意的地方。Ajax请求中的异步与同步,需要注意的地方。View Code
 1 var temp; 
 2 $.ajax({ 
 3     async: false, 
 4     type : "POST", 
 5     url : defaultPostData.url, 
 6     dataType : 'json', 
 7     success : function(data) { 
 8         temp=data; 
 9     } 
10 }); 
11 alert(temp); 

 

这个ajax请求则为同步请求,在没有返回值之前,alert(temp)是不会执行的。 

如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。