Ajax同步 非同步請求的區別

2022-07-26 10:51:10 字數 2111 閱讀 7791

同步是指:傳送方發出資料後,等接收方發回響應以後才發下乙個資料報的通訊方式。

使用者填寫所有資訊後,提交給伺服器,等待伺服器的回應(檢驗資料),是一次性的。資訊錯誤又要重新填寫!

非同步是指:傳送方發出資料後,不等接收方發回響應,接著傳送下個資料報的通訊方式。

當使用者填寫完一條資訊後,該資訊會自動向伺服器提交,然後伺服器響應客戶端,在此過程中,使用者依然在填寫**的資訊,即向伺服器請求多次,節省了使用者的時間,提高了使用者的體驗。

同步請求:

客戶端請求(等待)->服務端處理->響應->頁面載入(缺少物件:xmlhttprequest),這時候如果有錯誤,只能再次傳送請求,再次等待

非同步請求:

比如當你填寫郵箱位址的時候,頁面當時就把郵箱位址傳送到了伺服器(也就是頁面傳送了乙個請求),伺服器做處理和響應,得到你的郵箱位址填寫重複了,把響應結果發給頁面,在這個過程中你仍然可以填寫其他內容,這時候伺服器會提示你有重複的郵箱位址,在頁面上的表現只是郵箱位址旁別加了一行字或者把整個文字框標紅,並沒有重新刷你的頁面,所有的填寫錯誤會實時的顯示出來,你也會實時的更正。這個過程中,你會有整個頁面的重新整理,也不會有整個頁面的提交和等待,最後提交,一切都會搞定的

非同步操作例子:

為了避免短時間大量的資料庫操作,就使用快取機制,也就是訊息佇列。先將資料放入訊息佇列,然後再慢慢寫入資料庫。

引入訊息佇列機制,雖然可以保證使用者請求的快速響應,但是並沒有使得我資料遷移的時間變短(即80萬條資料寫入mysql需要1個小時,用了redis之後,還是需要1個小時,只是保證使用者的請求的快速響應。使用者輸入完http url請求之後,就可以把瀏覽器關閉了,幹別的去了。如果不用redis,瀏覽器不能關閉)。

總結:頁面上的操作和伺服器端的操作互相之間不會造成阻塞

====一道面試題=建立非同步請求過程的4個步驟:**********==

1) new乙個xhr物件

2) 呼叫open方法

3) send一些資料

4) 對過程進行監聽,來知道伺服器是不是正確地做出了響應,接著可以做一些事情

概括:

兩者最大的區別:同步需要等待,而非同步無需等待。例子:普通b/s模式(同步),ajax技術(非同步)

同步:提交請求 -> 等待伺服器處理 -> 處理完畢返回 ,這個期間客戶端瀏覽器不能幹別的事。

同步是按順序執行,執行完乙個再執行下乙個,需要等待、協調執行

非同步: 請求通過事件觸發 -> 伺服器處理(這是瀏覽器仍然可以作其他事情)-> 處理完畢。

非同步就是彼此獨立,在等待某事件的過程中繼續做自己的事,不需要等待這一事件完成後再工作。執行緒就是非同步實現的乙個方式,非同步是讓呼叫方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程幹其它的事情。

非同步和多執行緒並不是乙個同等關係,非同步是最終目的,多執行緒只是我們實現非同步的一種手段。非同步是當乙個呼叫請求傳送給被呼叫者,而呼叫者不用等待其結果的返回而可以做其它的事情。

實現非同步可以採用多執行緒技術或則交給另外的程序來處理。

詳解:

同步和非同步區別(好處和壞處):

同步避免出現死鎖,讀髒資料的發生。一般共享某一資源的時候用,如果每個人都有修改許可權,同時修改乙個檔案,有可能使乙個人讀取另乙個人已經刪除的內容,就會出錯,同步就會按順序來修改。但是同步需要等待資源訪問結束,浪費時間效率低。

非同步提高效率,現在cpu都是雙核、四核,非同步處理的話可以同時做多項工作,當然必須保證是可以併發處理的。但是安全性較低。

拓展:

併發:在作業系統中,是指乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個處理機上執行。其中兩種併發關係分別是同步和互斥。

互斥:程序間相互排斥的使用臨界資源的現象,就叫互斥。

並行:在單處理器中多道程式設計系統中,程序被交替執行,表現出一種併發的外部特種;在多處理器系統中,程序不僅可以交替執行,而且可以重疊執行。在多處理器上的程式才可實現並行處理。從而可知,並行是針對多處理器而言的。並行是同時發生的多個併發事件,具有併發的含義,但併發不一定並行,也亦是說併發事件之間不一定要同一時刻發生。

多執行緒:多執行緒是程式設計的邏輯層概念,它是程序中併發執行的一段**。多執行緒可以實現執行緒間的切換執行。

Ajax非同步 同步請求

ajax請求最重要的問題是 執行的順序。最長遇到的問題是,我們定義乙個變數接收ajax非同步請求的返回結果,後續 使用,然而後續 在使用時該變數為初始值,始終得不到想要的結果!同步 var email test ptmind.com console.log 1 jquery.ajax console...

ajax同步請求與非同步請求

在前後臺請求資料互動的時候,我們經常用到ajax來進行資料的請求與返回,ajax請求的async欄位是boolean型別,用來標識ajax請求是同步請求或者非同步請求。async預設為true,非同步請求。兩者的區別如下 非同步請求 非同步請求的好處是 不用等待ajax返回資料結果,就繼續往下執行,...

ajax同步請求和非同步請求

這裡講解一下ajax 同步和非同步的差異,先看2 段 一 二 同步和非同步的差異如下 obj.open post url,true ajax非同步 obj.open post url,false ajax同步 對於 一,為非同步的ajax請求,執行結果為 先執行alert 2 再執行alert 1 ...