关于ajax请求的一些问题(面试)

1.ajax默认的请求是同步还是异步?

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

2.ajax中什么时候使用同步,什么时候使用异步?

这个问题的思路是:什么是同步请求,什么是异步请求,然后才是使用场景的分析

(1)什么是同步请求:

        同步请求即是当前发送请求后,浏览器什么都不能做,必须等到请求完成返回数据之后,才执行后续的代码。也就是说,当js代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个ajax执行完毕后才会继续运行其他代码,页面解除假死状态。

(2)什么是异步请求:

        异步请求就是当发出请求的同事,浏览器可以继续做任何事,Ajax请求并不会影响页面的加载与用户的操作,相当于是在两条平行线上,互不影响。

(3)同步和异步有什么不同

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

         同步:在同步模式下,当我们使用ajax发送完请求后,后续还有代码需要执行,我们同样将服务器响应交由另一个函数去执行,但是这时,在服务器没有响应或者处理结果的js函数还没有处理完成return时,包含请求代码的函数的剩余代码是 不能执行的,就像一个单线程,请求发出去后就进入阻塞状态,直到解除阻塞状态,余下的代码才会继续执行。

同步适用的一些情况:

在一些状况下,只有执行完ajax这步,拿到数据后再进行执行下一步操作,这是异步无法实现的。

在我们发送ajax请求后,还需要继续处理服务器的响应结果,如果我们这时将结果的处理交由另一个函数进行处理,这时就可能出现,异步请求的响应还没有处理完,函数已经执行了return语句,这时将导致return的结果为空字符串

(4)如何设置ajax为同步

        只需要把async的value设置为false就行

注意:

       1.如果项目中在做一项操作前要进行ajax验证,无论是同步还是异步,都必须在验证通过后,方可进行其他操作

        2.熟练应用error参数,关注返回来的的异常信息,从而判断程序的错误位置。

        3.项目前端做验证,后端也做响应的认证;前端做验证是为了减少服务器压力和增加用户体验,后端做验证才是为了安全

猜你喜欢

转载自blog.csdn.net/weixin_38098192/article/details/81031304