JQ Ajax 同步與異步的區別
阿新 • • 發佈:2017-07-04
get 發送 ldr 假死 sync 發出 timeout 執行 結果
$.ajax({ url: xml_addr, type: ‘get‘, dataType: ‘xml‘, timeout: 1000, //設定超時 cache: false, //禁用緩存 async:false,//同步(保證配置取出再執行其他的代碼) error: function(xml) { console.log("讀取xml出錯"); }, success:function(xml) { $(xml).find("server").each(function(i) { //查找所有student節點並遍歷 var index = $(this).children("index"); //獲得子節點 var child = $(this).children("child"); //獲取節點的屬性 server_josn={"index":index.text(),"child":child.text()}; }); }//設置成功後回調函數
jquery中ajax方法有個屬性async用於控制同步和異步,默認是true,即ajax請求默認是異步請求,有時項目中會用到AJAX同步。這個同步的意思是當JS代碼加載到當前AJAX的時候會把頁面裏所有的代碼停止加載,頁面出現假死狀態,當這個AJAX執行完畢後才會繼續運行其他代碼頁面假死狀態解除。而異步則這個AJAX代碼運行中的時候其他代碼一樣可以運行。
ajax中async這個屬性,用於控制請求數據的方式,默認是true,即默認以異步的方式請求數據。
一、async值為true (異步)
當ajax發送請求後,在等待server端返回的這個過程中,前臺會繼續 執行ajax塊後面的腳本,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個線程,ajax塊發出請求後一個線程 和ajax塊後面的腳本(另一個線程)
二、async值為false (同步)
當執行當前AJAX的時候會停止執行後面的JS代碼,直到AJAX執行完畢後時,才能繼續執行後面的JS代碼
JQ Ajax 同步與異步的區別