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. 异步执行的时候,数据请求的同时,其他代码语句也可以同步执行,比如,在数据请求的时候,由于某些愿意,需要慢慢的返回请求结果,在这个时候带宽是很空闲的,那么,代码不会等到前面的数据完全请求返回就可以开始后面的代码运行。