首頁  >  文章  >  web前端  >  jQuery中的ajax async同步與非同步詳解_jquery

jQuery中的ajax async同步與非同步詳解_jquery

WBOY
WBOY原創
2016-05-16 15:37:351405瀏覽

專案中有這樣一個需求,使用ajax載入資料返回頁面並賦值,然後前端取出該值

這其中涉及到程式碼的順序問題,有時後台還未回傳數據,但已執行後面程式碼,

所以就會造成無法取值

$.ajax({ type: "post",  url: "admin/PfmOptionRuleItem.do", success: function(data){  $("#ruleItem").val(data.ruleItem); //① } }); return $("#ruleItem").val(); //②

如果①還未從背景回傳資料 此時執行②就取得不到值

Ajax的第一個字母是asynchronous的開頭字母,這意味著所有的操作都是並行的,完成的順序沒有前後關係。

$.ajax()的async參數總是設定成true,這標誌著在請求開始後,其他程式碼依然能夠執行。

如果把這個選項設定成false,這表示所有的請求都不再是異步的了,這也會導致瀏覽器被鎖死。

雖然官方不建議這麼乾,只是不能用太多,否則會造成使用者體驗不佳

舉個栗子

alert("setp 1"); $.ajax({  url: "admin/PfmOptionRuleItem.do",  async: false,  success: function(data){   alert("hello ajax"); //①  } }); alert("setp 2"); //②

當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求後,

他會等待在①這個地方,不會去向下執行②,直到①執行完畢

此時依序執行順序為

setp 1

hello ajax

setp 2

如果async為true 則執行順序為

setp 1

setp 2

hello ajax

關於本文給大家敘述的jQuery中的ajax async同步和異步,全部介紹完了,希望對大家有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn