我们知道,jQuery中ajax同步的实现方法很简单:

如果想同步 async设置为false就可以(默认是true)

var html = $.ajax({  
  url: "some.php",
  async: false
  }).responseText; 

或者在全局设置Ajax属性

$.ajaxSetup({
  async: false
});

再用post,get就是同步的了

但了解了js的执行机制(↓↓↓↓↓)后,知道了js是主线程同步执行,异步任务放入任务队列,轮询触发。

  • 这两篇文章记录了js的脚本执行流程,和同步异步的使用
    JS - 15 - 异步、Promise、async、await
    JS - 16 - 任务调度、宏任务、微任务、轮询

jQuery的同步请求是在上面代码发送请求,下面代码等待至响应回来后,才执行代码。

这与js的执行机制似乎相矛盾,但jQuery又是js写的。。。
由此产生了问题:jQueryajax 是实现同步请求的呢?

  • 深入理解ajax系列第一篇——XHR对象
    https://wwwblogs/xiaohuochai/p/6036475.html
  • 深入理解ajax系列第二篇——请求方式https://wwwblogs/xiaohuochai/p/6486643.html
  • 深入理解ajax系列第三篇——响应解码 https://wwwblogs/xiaohuochai/p/6520547.html
  • 深入理解ajax系列第四篇——FormData https://wwwblogs/xiaohuochai/p/6539330.html
  • 深入理解ajax系列第五篇——进度事件 https://wwwblogs/xiaohuochai/p/6552674.html
  • 深入理解ajax系列第六篇——头部信息 https://wwwblogs/xiaohuochai/p/6486578.html
  • 深入理解ajax系列第七篇——传递JSON https://wwwblogs/xiaohuochai/p/6488738.html
  • 深入理解ajax系列第八篇——表单提交 https://wwwblogs/xiaohuochai/p/6483493.html
  • 深入理解ajax系列第九篇——jQuery中的ajax https://wwwblogs/xiaohuochai/p/6515478.html

更多推荐

jQuery的 ajax 实现同步的原理