1. 程式人生 > >$.ajax 同步/非同步(async:false/true)

$.ajax 同步/非同步(async:false/true)

我覺得這個理解挺通透的:

雖然說ajax用來執行非同步請求的比較多,但有時還是存在需要同步執行的情況的。

比如:我需要通過ajax取執行請求以返回一個值,這個值在ajax後面是需要使用到的,這時就不能用非同步請求了。這時候就需要使用到async這個屬性了。

async:true,(預設),非同步方式,$.Ajax執行後,會繼續執行ajax後面的指令碼,直到伺服器端返回資料後,觸發$.Ajax裡的success方法,這時候執行的是兩個執行緒。

async:false,同步方式,所有的請求均為同步請求,在沒有返回值之前,同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。

 

例如:

[html] view plain copy

  1. var temp;  
  2. $.ajax({  
  3.    async: false,  
  4.    type : "POST",  
  5.    url : defaultPostData.url,  
  6.    dataType : 'json',  
  7.    success : function(data) {  
  8.       temp=data;  
  9.    }  
  10. });  
  11. alert(temp);  

這個ajax請求為同步請求,在沒有返回值之前,alert(temp)是不會執行的。

如果async設定為:true,則不會等待ajax請求返回的結果,會直接執行ajax後面的語句:alert(temp);