ajax之async屬性

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

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

async Boolean Default: true jquery

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.ajax

async. 默認是true,即爲異步方式,$.Ajax執行後,會繼續執行ajax後面的腳本,直到服務器端返回數據後,觸發$.Ajax裏的success方法,這時候執行的是兩個線程。若要將其設置爲false,則全部的請求均爲同步請求,在沒有返回值以前,同步請求將鎖住瀏覽器,用戶其它操做必須等待請求完成才能夠執行。json

下面查看一個示例:api

 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.htmlasync

相關文章
相關標籤/搜索