javascript - 關于ajax異步的問題
問題描述
async 默認是 true,即為異步方式,$.Ajax 執行后,會繼續執行ajax后面的腳本,直到服務器端返回數據后,觸發$.Ajax里的success方法,這時候執行的是兩個線程。若要將其設置為false,則所有的請求均為同步請求,在沒有返回值之前,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。
這個其他操作具體舉個例子呢,是指 http 請求還是 js 腳本?
問題解答
回答1:先上圖
async 為 false 的時候,阻塞代碼直到 ajax 調用返回,所以是先執行的 done(即 success) 再執行的 ajax 調用之后的那句 console.log。
async 為 true(默認) 的時候,不阻塞代碼,所以下面的 console.log 先執行,等 ajax 返回之后再執行的 done 里面的 console.log。
回答2:指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
回答3:$.Ajax 后面的 js 腳本。(最好不要使用腳本這個詞)
回答4:如果ajax是同步的,就是說js順序執行,http請求是ajax發的,js是就是js,不要混為一談。用戶其他操作,應該是指用戶觸發了和js有關的操作。如果ajax后面有綁定某個元素的時間,是可以觸發的。最終總結就是,當前js腳本,同步ajax時,腳本順序執行;異步ajax時,異步執行,所謂異步執行就是,執行到ajax時,不等請求是否返回,直接執行ajax之后的js語句。
相關文章:
1. css3 - jquery div 翻轉?2. python - 有什么好的可以收集貨幣基金的資源?3. docker容器呢SSH為什么連不通呢?4. docker鏡像push報錯5. docker安裝后出現Cannot connect to the Docker daemon.6. docker start -a dockername 老是卡住,什么情況?7. docker網絡端口映射,沒有方便點的操作方法么?8. MySQL數據庫中文亂碼的原因9. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題10. golang - 用IDE看docker源碼時的小問題
