vlambda博客
学习文章列表

整理ajax同步异步请求

在项目中需要实现自定义人员选择器,后台通过逻辑筛选想要的人员Id集合后返回给前台,前台进行接收后,去调用选择器的接口。

如上图,刚开始我的success函数拿到的data,一直显示undefined,遂重命名参数,发现还是不行。开始前台和后台同时debug,发现进入后台逻辑执行后,前台并没有停下等待后台执行返回结果,故定位出是因为ajax同步异步请求导致参数报错。

接下来就大致的说一下ajax 同步与异步的机制实现。

1. 什么是同步请求?(async = false

同步请求即为前端发出请求后,等待后台给出响应结果,并且在此期间前端处于“假死”状态。当后台返回值后,才会继续执行后续代码。

2. 什么是异步请求?(async = true 或默认不写)

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

3. 什么情况下选择同步/异步?

同步是一步一步线性执行代码,即调用后台后必须拿到返回值才能执行下一阶段代码。这个时候就适用于,下一个阶段的代码中所需要的参数是后台的返回值,如果不设为同步的话,那么这个变量则为初始值,影响代码的执行。

异步适用于下一阶段不关联后台返回值,且追求页面给客户的即时反应。