首頁  >  文章  >  web前端  >  細數Ajax請求中的async:false和async:true的差異

細數Ajax請求中的async:false和async:true的差異

亚连
亚连原創
2018-05-22 17:23:251744瀏覽

下面我就為大家帶來一篇細數Ajax請求中的async:false和async:true的差異。現在就分享給大家,也給大家做個參考。

實例如下:

function test(){
  var temp="00";
  $.ajax({
    async: false,
    type : "GET",
    url : 'userL_checkPhone.do',
    complete: function(msg){
      alert('complete');
    },
    success : function(data) {
      alert('success');
      temp=data;
      temp="aa";
    }
  });
  alert(temp);
  }

#UserLAction中checkPhone()方法

  public void checkPhone() throws IOException {
    this.getServletResponse().setContentType("text/html; charset=UTF-8");
    this.getServletResponse().setHeader("Cache-Control", "no-cache");
    PrintWriter out = this.getServletResponse().getWriter();
    out.print("true");

  }

async: false,(預設是true);

當async: false為同步,這個test()方法中的Ajax請求將整個瀏覽器鎖死,

#只有userL_checkPhone .do執行結束後,才可以執行其它操作。

所以執行結果是先alert('success'); alert('complete'); alert("aa");

當async: true 時,ajax請求是異步的。但其中有個問題:test()中的ajax請求和其後面的操作是異步執行的,那麼當userL_checkPhone.do還未執行完,就可能已經執行了ajax請求後面的操作,

所以結果是alert('success'); alert('complete'); alert("00");

這樣就會發現alert("success")和alert(temp)幾乎是同步執行,所以temp就是初始化的值temp = "00",而不是  temp="aa";

上面是我整理給大家的,希望以後會對大家有幫助。

相關文章:

Ajax與mysql資料互動製作留言板功能

Ajax同步與非同步問題淺析及解決方法

ajax回應json字串和json陣列的實例(圖文教學)

以上是細數Ajax請求中的async:false和async:true的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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