$.ajax 同步/非同步(async:false/true)
阿新 • • 發佈:2018-11-12
我覺得這個理解挺通透的:
雖然說ajax用來執行非同步請求的比較多,但有時還是存在需要同步執行的情況的。
比如:我需要通過ajax取執行請求以返回一個值,這個值在ajax後面是需要使用到的,這時就不能用非同步請求了。這時候就需要使用到async這個屬性了。
async:true,(預設),非同步方式,$.Ajax執行後,會繼續執行ajax後面的指令碼,直到伺服器端返回資料後,觸發$.Ajax裡的success方法,這時候執行的是兩個執行緒。
async:false,同步方式,所有的請求均為同步請求,在沒有返回值之前,同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。
例如:
[html] view plain copy
- var temp;
- $.ajax({
- async: false,
- type : "POST",
- url : defaultPostData.url,
- dataType : 'json',
- success : function(data) {
- temp=data;
- }
- });
- alert(temp);
這個ajax請求為同步請求,在沒有返回值之前,alert(temp)是不會執行的。
如果async設定為:true,則不會等待ajax請求返回的結果,會直接執行ajax後面的語句:alert(temp);