async
默认是 true
,即为异步方式,$.Ajax
执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.Ajax
里的success方法,这时候执行的是两个线程。若要将其设置为false
, dann sind alle Anfragen synchrone Anfragen, bevor es keinen Rückgabewert gibt, die synchrone Anfrage sperrt den Browser und der Benutzer andere Vorgänge muss warten, bis die Anfrage abgeschlossen ist, bevor sie ausgeführt werden können.
Was sind die konkreten Beispiele für diesen anderen Vorgang? Bezieht er sich auf eine HTTP-Anfrage oder ein JS-Skript?
先上图
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_ytK1DK6mlrte4viZQRAVDb6QHOTCU8sumX0sqdFtXLR_7Mi8xR_qbIwdzZz
$.Ajax
后面的 js 脚本。(最好不要使用脚本这个词)如果ajax是同步的,就是说js顺序执行,http请求是ajax发的,js是就是js,不要混为一谈。
用户其他操作,应该是指用户触发了和js有关的操作。如果ajax后面有绑定某个元素的时间,是可以触发的。
最终总结就是,当前js脚本,同步ajax时,脚本顺序执行;异步ajax时,异步执行,所谓异步执行就是,执行到ajax时,不等请求是否返回,直接执行ajax之后的js语句。