Ajax之同步請求和非同步請求的區別?使用場景?

2021-10-21 14:00:16 字數 1147 閱讀 2663

一、區別

①、非同步:

在非同步模式下,當我們使用ajax傳送完請求後,可能還有**需要執行。這個時候可能由於種種原因導致伺服器還沒有響應我們的請求,但是因為我們採用了非同步執行方式,所有包含ajax請求**的函式中的剩餘**將繼續執行。如果我們是將請求結果交由另外乙個js函式去處理的,那麼,這個時候就好比兩條執行緒同時執行一樣。如下:

$.

ajax

( failure:

function

(result),}

function2()

;

當ajax傳送請求後,在等待server端返回的這個過程中,前台會繼續 執行ajax塊後面的指令碼,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個執行緒,ajax塊發出請求後乙個執行緒 和ajax塊後面的指令碼(另乙個執行緒)

在上例中,當ajax塊發出請求後,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前台會去執行function2()。

②、同步

在同步模式下,當我們使用ajax傳送完請求後,後續還有**需要執行,我們同樣將伺服器響應交由另乙個js函式去處理,但是這時的**執**況是:在伺服器沒有響應或者處理響應結果的js函式還沒有處理完成return時,包含請求**的函式的剩餘**是不能夠執行的。就好比單執行緒一樣,請求發出後就進入阻塞狀態,知道接觸阻塞餘下的**才會繼續執行。如下:

$.

ajax(,

success:

function

(data)

, datatype:

"json"

,async

:false})

;function(2

);

當執行當前ajax的時候會停止執行後面的js**,直到ajax執行完畢後時,才能繼續執行後面的js**。

當把async設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求後,他會等待在function1()這個地方,不會去執行function2(),直到function1()部分執行完畢。

三、總結:

非同步: 多執行緒;無需等待

同步: 單執行緒,需要等待(容易阻塞程序,頁面卡頓使用者體驗不好等)

ajax同步請求和非同步請求

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

ajax同步請求和非同步請求的差異

ajax同步和非同步的差異,先看2段 一 synchronize function url,param catch e catch e finally var conn createxhrobject conn.open post url,false ajax同步 conn.send param v...

getJSON非同步請求和同步請求

同時執行多個 getjson 時,資料混亂的問題的解決方法 在執行之前加 ajaxsettings.async false 同步執行 執行你的 之後及時恢復為 ajaxsettings.async true 非同步執行 不然影響別的地方的需要非同步執行的 example ajaxsettings.a...