Ajax中的async的取值(非同步和同步)

2021-08-09 17:23:53 字數 640 閱讀 5349

之前去面試廣州科騰公司時,面試官問了乙個問題—ajax的async取值的理解。那時候的我可以說是個死菜鳥(現在可能是個半死不活的菜鳥),只是理解取值的字面意思,最後還要面試官給我解釋。雖然面試肯定是掛了,但是至少面試官教了我點東西,也不虧了對吧。言歸正傳了。

ajax的open方法的第三個引數是async的取值,分別有true和false。true表示是非同步模式,false表示同步模式。

首先要明確一點,ajax在全域性環境中是非同步模式的 ,async講的是ajax請求內部的同非同步。

對於同步模式,如果ajax發出請求(send方法呼叫後),後續還有**執行,此時如果伺服器響應不及時(也就是此時ajax的請求**還沒有全部執行完成),後續的**不會執行(此時頁面出現假死狀態,此時也不用考慮**的執行順序)。此時就會出現阻塞狀態。

對於非同步模式,一般多用非同步模式。如果ajax執行完send後,後續還有**需要執行,此時伺服器響應不夠及時,後續的**還是會繼續執行。不會出現阻塞現象

既然非同步比較好,那為什麼會有同步這個選項呢。這也是那個面試官問我的問題之一。答案是,因為如果ajax執行完send後,後續的**是有關於響應結果的處理,那如果是非同步請求,則如果此時伺服器的響應結果還沒回來,那麼後續有關於響應結果的處理就會出現錯誤(return null)。此時是一定要用同步的。

關於ajax中async引數的感悟

async,這個引數預設為true。就是非同步去處理資訊。當把它設定為false的時候,就是同步去處理資料了。同步的時候,能夠獲取到res的值。非同步的時候,就獲取不到了。第二點,同步的時候,只要這樣寫,就會執行reset current phone中的 最後才進行跳轉。function do ba...

ajax請求中async屬性

遇到了乙個ajax,看到了乙個屬性,async,是用來設定同步執行,或者是非同步執行的 舉乙個例子 ajax success function ret layer.close index else if ret.code 40004 else error function alert 執行 當asy...

HTTP和AJAX(七 AJAX中的同步與非同步)

ajax中的同步和非同步 ajax這個任務 傳送請求接收到響應主體內容 完成乙個完整的http事務 xhr.send 任務開始 xhr.readytate 4 任務結束 同步程式設計 只輸出一次結果是4 由於採用的是同步程式設計,所以主任務佇列沒有完成 其它事情都做不了 1 2 2 3 3 4 狀態...