javascript - ajax 非同步和同步的問題

來源:互聯網
上載者:User
關鍵字 javascript php
我們問問大神們什麼是ajax非同步,什麼是ajax同步,兩者有什麼區別,或則兩者適用場合有什麼不同。

回複內容:

我們問問大神們什麼是ajax非同步,什麼是ajax同步,兩者有什麼區別,或則兩者適用場合有什麼不同。

同步非同步 和 ajax有什麼關係嗎
Ajax是Asynchronous Javascript And XML的縮寫
本身就是非同步 何談 同步

非同步就是 當前線程請求操作 後天開新線程處理 完畢後 回調結果給當前線程

同步意味著,在執行這段程式的時候,不能接著執行其他代碼,放在Ajax上,就相當於,當你Ajax擷取訊息期間什麼都幹不了,一看就不科學,所以非同步是為了讓他在擷取時可以正常運行其他部分的代碼,然後callback回調處理結果就行了。

在一系列需要執行的事件隊列裡面:
同步操作: 需要編譯器對語句一件件的執行下去,如果某個事件還沒有執行完畢,那麼系統就需要一直等待,直到該事件執行完畢!
非同步作業: 就好比吧這個事件拉出來放到另外一隊,做一個單獨的事情,程式執行到這個非同步時候,會分成兩部分,一部分繼續執行下面的程式,另一部分會單獨去執行這個非同步,互不影響程式載入!
在使用者角度來說,這樣不會讓使用者感覺他在等待響應!

ajax.open方法中,第3個參數是設同步或者非同步。prototype等js類庫一般都預設為非同步,即設為true。
先說下同步的情況下,js會等待請求返回,擷取status。不需要onreadystatechange事件處理函數。而非同步則需要onreadystatechange事件處理,且值為4再正確處理下面的內容。

我自己的理解是這樣的,ajax同步,即向伺服器請求並在此等待伺服器的回應,直到伺服器回應了才繼續往下走;ajax非同步,即向伺服器發送請求後,無需等待伺服器的回應,直接往後走。

舉個例子說明吧。
我們假設有三句語句

  1. method1() 需要0.5秒

  2. $.ajax() 需要2 秒

  3. method2() 需要0.5秒

同步:就是1執行完後,執行2的時候,阻塞,直到ajax全部結束,執行方法3 一共3秒
非同步:執行完1後,2開始執行的同時,3也馬上執行非阻塞,往下走。 理論全部結束 一共 2.5秒
同步=串列,非同步=並行,這樣子。

本來沒有ajax非同步和同步的說法,AJAX本身便是非同步請求資料的意思,但是請求資料還有同步的方式。

即XMLHttpRequest對象包含了同步請求非同步請求兩種使用方式。當年因為非同步技術給開發帶來了深刻影響,所以AJAX技術火了,人們也習慣把向伺服器請求資料的技術稱為AJAX,但實際上還有同步,只是稱呼上就被叫做了AJAX同步了,約定俗成而已

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.