同步請求和異步請求的區別併發
先解釋一下同步和異步的概念
同步是指:發送方發出數據後,等接收方發回響應之後才發下一個數據包的通信方式。
異步是指:發送方發出數據後,不等接收方發回響應,接着發送下個數據包的通信方式。異步
同步通訊方式與異步通訊的概念
同步通訊方式要求通訊雙方以相同的時鐘頻率進行,並且準確協調,經過共享一個單個時鐘或定時脈衝源保證發送方和接收方的準確同步,效率較高;
異步通訊方式不要求雙方同步,收發方可採用各自的時鐘源,雙方遵循異步的通訊協議,以字符爲數據傳輸單位,發送方傳送字符的時間間隔不肯定,發送效率比同步傳送效率低。函數
使用者用於調用WEB服務的通訊選擇:同步或異步。
使用者能夠同步或異步實現服務調用。從使用者的觀點來看,這兩種方式的不一樣之處在於:
同步——使用者經過單個線程調用服務;該線程發送請求,在服務運行時阻塞,而且等待響應。
異步——使用者經過兩個線程調用服務;一個線程發送請求,而另外一個單獨的線程接收響應。
術語同步 和異步 常常與順序 和併發 混淆了。後面的這兩個術語與執行單獨的任務必須遵循的順序有關,而同步和異步 與線程執行單個任務(如調用單個服務)的方式有關。理解同步和異步調用之間的不一樣的一種很好的方法是考慮崩潰恢復的後果:
同步——若是使用者在服務運行的過程當中阻塞時崩潰了,當它從新啓動時,將沒法從新鏈接到正在進行的調用,因此響應丟失了。使用者必須重複調用過程,而且指望此次不會崩潰。
異步——若是使用者在發送了請求以後等待響應時崩潰了,當它從新啓動時,能夠繼續等待響應,因此響應不會丟失。
崩潰恢復不是同步和異步調用之間的惟一不一樣,可是若是您嘗試肯定某個調用採用哪種方式,請考慮每一種調用如何處理崩潰恢復,這一般能夠給您一個很好的答案.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
沒有分啊???
AJAX的核心是客戶端的JavaScript程序可以實現異步執行,異步執行是相對與同步執行的.同步執行意味着代碼必須順序執行,在此給你舉個例子,你就會明白了!
Line_1
Line_2
Line_3
Line_1必須執行完後,才能執行Line_2.Line_1可能調用的是一個函數,有可能這個函數很複雜,須要運行幾小時能才運算完畢,而這個時候,你必須等,等到Line_1徹底執行完畢,你才能執行Line_2,同理,Line_3也是!
異步則不一樣,仍是假定Line_1,要調用的函數要執行幾個小時,而這個時候,你就沒必要要等Line_1執行完畢纔去執行Line_2,同理,Line_3也是!
異步執行中有一個很是特殊的功能,那就是回調.一樣是上面的那個例子,Line_1在調用函數時能夠指定函數執行完後要調用的另外一個函數.當過了幾個小時後,函數執行完畢了(固然這中意也有可能會出現錯誤),它會發出一個回調命令,這個命令會調用指定的另外一個函數,從而通知程序"執行完了".若是能夠,還會傳遞一些參數,這些參數可能就是幾個小時以來運算的結果!
不知道我這樣講你有沒有明白!至於AJAX怎麼用,如何去解決AJAX出現的問題(好比書籤問題,後退按鈕的問題等),你能夠本身去找這方面的資料看看線程