一、區別
①、非同步:
在非同步模式下,當我們使用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...