1. 程式人生 > 實用技巧 >Ajax請求中的async:false/true的作用

Ajax請求中的async:false/true的作用

原文連線:https://www.cnblogs.com/yiliweichinasoft/p/3667365.html

Ajax請求中的async:false/true的作用

官方的解釋是:http://api.jquery.com/jQuery.ajax/

async Boolean Default: true

By default, all requests are sent asynchronous (e.g. this is set to true by default). If you need synchronous requests, set this option to false. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.

async. 預設是true,即為非同步方式,$.Ajax執行後,會繼續執行ajax後面的指令碼,直到伺服器端返回資料後,觸發$.Ajax裡的success方法,這時候執行的是兩個執行緒。若要將其設定為false,則所有的請求均為同步請求,在沒有返回值之前,同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。

下面檢視一個示例:

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

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

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

不過上面設定同步請求的方法,有網友曾經反饋將async設成false後, 原意是想返回資料了再執行$.Ajax後面的指令碼, 沒想到這個地方卻導致了在火狐瀏覽器下出現閃屏(Firefox 11.0),滾動條下拉到底部觸發ajax的情況。最後只能將async:false註釋掉, 也就是async為ture的情況下,成功解決了火狐瀏覽器滾動條下拉到底部觸發ajax出現閃屏的問題。

轉載請標明出處:http://www.penglig.com/post-172.html