同步与异步的个人理解

听了很多人说同步与异步的区别,面试中也会经常遇到这类问题。现在我把自己的理解整理如下:

首先要清楚什么是同步和异步:

同步:比如我给你打电话,你立马就接了,然后跟我通话,就是同步

异步:如果打电话给你,你手机不在身边,待会你再给我打过来,就是异步

还比如说:就像串联电路和并联电路,串联电路中打开开关,所有的灯都会亮,这就相当于同步。并联电路中,每个灯都有开关来控制,互不受影响,就相当于异步。

同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干别的事。

异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕。

比如说,你在网页中填写一个表单的时候。如果是同步,填写完成后提交给服务器,等待服务器响应,如果信息填写错误,就要重新填写全部信息再去发送给服务器验证。如果是异步,就是说我填写的时候可以写完一条就向服务器提交来验证。这个过程我还能继续填写信息,不影响我下面信息的填写。

同步与异步的区别:同步需要等待,而异步无需等待。

ajax中的同步与异步:

ajax中根据async的值不同分为同步(async = false)和异步(async = true)两种执行方式;在W3C的教程中推荐使用异步执行。

ajax同步:当我们使用ajax发送完请求后,后续还有代码需要执行,我们同样将服务器响应交由另一个JS函数去处理,但是这时的代码执行情况是:在服务器没有响应或者处理响应结果的JS函数还没有处理完成return时,包含请求代码的函数的剩余代码是不能够执行的。也就是说,同步就是走ajax这条路,走完再走ajax后面程序的路。

ajax异步:当我们使用ajax发送完请求后,可能还有代码需要执行。这个时候可能由于种种原因导致服务器还没有响应我们的请求,但是因为我们采用了异步执行方式,所有包含ajax请求代码的函数中的剩余代码将继续执行。如果我们是将请求结果交由另外一个JS函数去处理的,那么,这个时候就好比两条线程同时执行一样。也就是说,异步相当于走了两条路,一条ajax的路一条ajax后面的程序的路,这两条路都在走。

你可能感兴趣的:(同步与异步的个人理解)