Ajax同步与异步的区别
在使用ajax请求数据的时候,通常情况下我们都是把```async:true ```当做默认来处理,让我们的请求成为一个异步的请求。但是在某种情况下我们是需要吧```async:false```设置为false的,方便我们进行观察数据的走向、去处。那**同步和异步**有什么区别呢?
## 同步请求
async:false
... $.ajax({ async:false, type:"POST", url:"Venue.aspx?act=init", dataType:"html", success:function(result){ //function1() f1(); f2(); } failure:function (result) { alert('我在弹'); } } function2(); ...
分析
- 这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),直到function1()部分执行完毕。
## 异步请求
async:true
... $.ajax({ async: true, //默认为 true type:"POST", url:"./xxx/xxx/a/b.html", dataType:"html", success:function(result){ //function1() f1(); f2(); } failure:function (result) { alert('我弹'); }, } function2(); ...
分析
- 当ajax块发出请求后,他将停留function1(),等待返回结果,但同时(在这个等待过程中),function2()就可以跑起来。
总结(两者的区别)
1. 同步的请求的时候,代码好比在排队,必须是一个挨着一个地去执行,前面的没有结束,后面的代码就处于一个阻塞的状态。
2. 异步执行的时候,数据请求的同时,其他代码语句也可以同步执行,比如,在数据请求的时候,由于某些愿意,需要慢慢的返回请求结果,在这个时候带宽是很空闲的,那么,代码不会等到前面的数据完全请求返回就可以开始后面的代码运行。