async 默认是 true,即为异步方式,$.Ajax 执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.Ajax里的success方法,这时候执行的是两个线程。若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
async
true
$.Ajax
false
这个其他操作具体举个例子呢,是指 http 请求还是 js 脚本?
Following the voice in heart.
先上图
async 为 false 的时候,阻塞代码直到 ajax 调用返回,所以是先执行的 done(即 success) 再执行的 ajax 调用之后的那句 console.log。
done
success
console.log
async 为 true(默认) 的时候,不阻塞代码,所以下面的 console.log 先执行,等 ajax 返回之后再执行的 done 里面的 console.log。
指js脚本http://transcoder.tradaquan.com/from=2001a/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2003%2Cta%40iphone_1_10.3_1_11.5/baiduid =3ECCA1E6D2665DB48EFEBB60D9D9084F/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=8260698868132866872&order=1&fm=alhm&h5ad=1&srd=1&dict=32&tj=h5_mobile_1_0_10_title&w _qd=IlPT2AEptyoA_yivDVKcCTpsvgzWOeIntjcXa3jSqfgrUO_&sec=21456&di=8e54227838fdccf9&bdenc=1&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRAVDb6 QHOTCU8sumX0sqdFtXLR_7Mi8xR_qbIwdzZz
$.Ajax 后面的 js 脚本。(最好不要使用脚本这个词)
如果ajax是同步的,就是说js顺序执行,http请求是ajax发的,js是就是js,不要混为一谈。用户其他操作,应该是指用户触发了和js有关的操作。如果ajax后面有绑定某个元素的时间,是可以触发的。最终总结就是,当前js脚本,同步ajax时,脚本顺序执行;异步ajax时,异步执行,所谓异步执行就是,执行到ajax时,不等请求是否返回,直接执行ajax之后的js语句。
先上图
async
为false
的时候,阻塞代码直到 ajax 调用返回,所以是先执行的done
(即success
) 再执行的 ajax 调用之后的那句console.log
。async
为true
(默认) 的时候,不阻塞代码,所以下面的console.log
先执行,等 ajax 返回之后再执行的done
里面的console.log
。指js脚本
http://transcoder.tradaquan.com/from=2001a/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2003%2Cta%40iphone_1_10.3_1_11.5/baiduid =3ECCA1E6D2665DB48EFEBB60D9D9084F/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=8260698868132866872&order=1&fm=alhm&h5ad=1&srd=1&dict=32&tj=h5_mobile_1_0_10_title&w _qd=IlPT2AEptyoA_yivDVKcCTpsvgzWOeIntjcXa3jSqfgrUO_&sec=21456&di=8e54227838fdccf9&bdenc=1&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRAVDb6 QHOTCU8sumX0sqdFtXLR_7Mi8xR_qbIwdzZz
$.Ajax
后面的 js 脚本。(最好不要使用脚本这个词)如果ajax是同步的,就是说js顺序执行,http请求是ajax发的,js是就是js,不要混为一谈。
用户其他操作,应该是指用户触发了和js有关的操作。如果ajax后面有绑定某个元素的时间,是可以触发的。
最终总结就是,当前js脚本,同步ajax时,脚本顺序执行;异步ajax时,异步执行,所谓异步执行就是,执行到ajax时,不等请求是否返回,直接执行ajax之后的js语句。