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

來源:互聯網
上載者:User

項目中有這樣一個需求,使用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同步和非同步,全部介紹完了,希望對大家有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.