2011-10-28 112 views

回答

23

它是異步的,它不鎖定瀏覽器。如果您觸發Ajax請求,用戶仍然可以在請求等待響應時工作。當服務器返回響應時,會運行回調來處理它。

可以使XMLHttpRequest同步,如果你想,如果你這樣做,瀏覽器鎖死而請求未完成(所以大多數的,這是不恰當的時間)

+2

-1異步的意思是「不是在同一時間」。你沒有解釋關於AJAX的「不同時」。你的答案聽起來像你可以在調用的同時工作,所以它被稱爲異步,這在語法上沒有任何意義。 – gcdev

+0

@gcdev我覺得這種混亂的產生是因爲,如前所述[這裏](https://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean#comment57854159_748189)本文中的「異步」和「同步」不涉及兩個或更多任務之間的時序關係;而是指的是任務與時鐘之間的關係。因此,這個答案是有道理的。 – today

0

簡單地說,它並不需要重新加載整個頁面以獲取新信息。 想象一下電子郵件客戶端。您不需要刷新頁面即可查看新電子郵件。阿賈克斯只是拉動服務器每隔幾分鐘,看看是否有新郵件,如果是這樣顯示出來

+1

恕我直言,這個答案給出了一個AJAX和一般異步的錯誤圖片。 AJAX和異步都不等於簡單重複輪詢,以防止用戶手動刷新頁面。異步不會阻塞(例如,當一些資源請求未決時,不阻止進一步的頁面/腳本處理)。這個答案在某種意義上是正確的,除了只是異步之外,AJAX還可以加載新數據並更新當前頁面,而無需加載全新頁面。 – stakx

15

這是異步的,因爲客戶端和函數調用的時間,服務器運行相互獨立的。

在正常的函數調用,您撥打電話,並調用函數不會去,直到函數調用結束並返回再次執行。主叫方和被叫方始終保持同步。

在異步函數調用期間,您進行調用,然後控制權立即返回給調用者。然後,被調用者稍後返回一個數值不確定的時間。 「不確定的時間量」意味着調用者和被調用者不再同步,因此它是異步的。

+0

謝謝 - 我終於明白究竟是什麼被認爲是「同步」和「異步」!一直困惑着我,當你同時運行兩個AJAX調用(同步)時,他們被稱爲「異步」。你很好地解釋了它。 – gcdev

0

即,而不是「阻止」,在Javascript執行的上下文中,因爲響​​應將由事件循環處理。

-1

客戶端和服務器在函數調用期間彼此獨立運行。

正常的函數調用 - 你撥打電話,並調用函數不會去,直到函數調用結束並返回再次執行。主叫方和被叫方始終保持同步。

異步函數調用 - 你撥打電話,然後立即控制返回給調用者。然後被調用者稍後返回一個未定義時間值。 「未定義的時間量」意味着調用者和被調用者不再同步,因此它是異步的。

-1

同步調用時總是維持序列,但異步不維護序列。