javascript - 關(guān)于ajax異步的問(wèn)題
問(wèn)題描述
async 默認(rèn)是 true,即為異步方式,$.Ajax 執(zhí)行后,會(huì)繼續(xù)執(zhí)行ajax后面的腳本,直到服務(wù)器端返回?cái)?shù)據(jù)后,觸發(fā)$.Ajax里的success方法,這時(shí)候執(zhí)行的是兩個(gè)線程。若要將其設(shè)置為false,則所有的請(qǐng)求均為同步請(qǐng)求,在沒(méi)有返回值之前,同步請(qǐng)求將鎖住瀏覽器,用戶其它操作必須等待請(qǐng)求完成才可以執(zhí)行。
這個(gè)其他操作具體舉個(gè)例子呢,是指 http 請(qǐng)求還是 js 腳本?
問(wèn)題解答
回答1:先上圖

async 為 false 的時(shí)候,阻塞代碼直到 ajax 調(diào)用返回,所以是先執(zhí)行的 done(即 success) 再執(zhí)行的 ajax 調(diào)用之后的那句 console.log。
async 為 true(默認(rèn)) 的時(shí)候,不阻塞代碼,所以下面的 console.log 先執(zhí)行,等 ajax 返回之后再執(zhí)行的 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 腳本。(最好不要使用腳本這個(gè)詞)
回答4:如果ajax是同步的,就是說(shuō)js順序執(zhí)行,http請(qǐng)求是ajax發(fā)的,js是就是js,不要混為一談。用戶其他操作,應(yīng)該是指用戶觸發(fā)了和js有關(guān)的操作。如果ajax后面有綁定某個(gè)元素的時(shí)間,是可以觸發(fā)的。最終總結(jié)就是,當(dāng)前js腳本,同步ajax時(shí),腳本順序執(zhí)行;異步ajax時(shí),異步執(zhí)行,所謂異步執(zhí)行就是,執(zhí)行到ajax時(shí),不等請(qǐng)求是否返回,直接執(zhí)行ajax之后的js語(yǔ)句。
相關(guān)文章:
1. docker 17.03 怎么配置 registry mirror ?2. 前端 - @media query 使用出現(xiàn)的問(wèn)題?3. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????4. node.js - mongodb查找子對(duì)象的名稱為某個(gè)值的對(duì)象的方法5. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?6. html5 - datatables 加載不出來(lái)數(shù)據(jù)。7. 測(cè)試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]8. javascript - QQ第三方登錄的問(wèn)題9. 利用IPMI遠(yuǎn)程安裝centos報(bào)錯(cuò)!10. spring-mvc - spring-session-redis HttpSessionListener失效

網(wǎng)公網(wǎng)安備