async
預設是true
,即為非同步方式,$.Ajax
執行後,會繼續執行ajax後面的腳本,直到伺服器端返回數據後,觸發$.Ajax
裡的success方法,這時候執行的是兩個執行緒。若要將其設定為false
,則所有的請求均為同步請求,在沒有傳回值之前,同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。
這個其他操作具體舉個例子呢,是指 http 請求還是 js 腳本?
天蓬老师2017-07-05 10:54:26
先上圖
async
為 false
的時候,阻塞代碼直到 ajax 呼叫返回,所以是先執行的 done
(即 success
) 再執行的 ajax 調用之後的那句
(預設) 的時候,不阻塞程式碼,所以下面的
true(預設) 的時候,不阻塞程式碼,所以下面的
console.logtrue
(預設) 的時候,不阻塞程式碼,所以下面的 console.log
true(預設) 的時候,不阻塞程式碼,所以下面的
console.log
曾经蜡笔没有小新2017-07-05 10:54:26
指js腳本
http://transcoder.tradaquan.com/from=2001a/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2003%2Cta%401_10103532Cta%403%2Cta%4001_103531035353/303725ta% =3ECCA1E6D2665DB48EFEB60D9D9084F/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=8260698868132866872&order=1&fm=alhm&h5ad=1&w _qd=IlPT2AEptyoA_yivDVKcCTpsvgzWOeIntjcXa3jSqfgrUO_&sec=21456&di=8e54227838fdccf9&bdenc=1&nsrc=IlPT2AEptptA_yixCFOxnW&bdenc=1&nsrc=IlPT2AEptA_yixv 0sqdFtXLR_7Mi8xR_qbIwdzZz
迷茫2017-07-05 10:54:26
如果ajax是同步的,就是說js順序執行,http請求是ajax發的,js是就是js,不要混為一談。
用戶其他操作,應該是指用戶觸發了和js有關的操作。如果ajax後面有綁定某個元素的時間,是可以觸發的。
最終總結就是,當前js腳本,同步ajax時,腳本順序執行;非同步ajax時,非同步執行,所謂非同步執行就是,執行到ajax時,不等請求是否返回,直接執行ajax之後的js語句。