2013-05-01 76 views
3

異步和同步之間有什麼區別,差異如何影響請求?爲什麼異步XMLHttpRequests優先於同步請求?

+4

它不會影響* request *,因爲它影響瀏覽器,因此影響用戶的體驗。同步請求會導致瀏覽器在等待響應時或多或少地「凍結」。 – Pointy 2013-05-01 23:38:40

+0

你能解釋爲什麼你認爲他們是「首選」嗎?就像每個工具一樣,使用異步或同步請求有很多好時光和不好的時候。 – 2013-05-01 23:39:37

+0

@PlatinumAzure:不,他不會 - 否則他不會問:-) – Bergi 2013-05-01 23:40:41

回答

5

從Mozilla的文章上Synchronous and asynchronous requests

XMLHttpRequest的支持同步和異步通信。但是,通常,出於性能原因,異步請求應該優先於同步請求。

簡而言之,同步請求會阻止代碼的執行,並可能泄漏內存和事件。這可能會導致嚴重問題。使用同步請求的唯一可行原因是更容易方便Web Worker中的下載。

異步請求是XMLHttpRequest存在的主要原因。 XMLHttpRequest支持AJAX,其思想是讓您的JavaScript代碼運行,並且您的用戶在您的頁面上執行任何操作,而JavaScript則在後臺與服務器通信。例如,Gmail會以這種方式加載您的電子郵件。

同步請求在傳輸完成時阻止腳本運行。簡而言之,當異步請求可用時,沒有理由這樣做。如果您的Gmail始終處於凍結狀態,這會非常令人討厭,您不覺得嗎?你很少,如果有的話,想要使用同步請求。

There are circumstances you must use a synchronous request,但在這些情況之外,您可能完全沒有理由發出同步請求,以及使用異步請求的每個理由。

2

異步請求允許您的腳本在等待服務器回覆時繼續運行並執行其他操作。

同步請求會阻止腳本的執行,直到收到答覆爲止。這意味着您的應用程序將無響應,並且無法執行其他任何操作。

+0

什麼(顯然很少見)情況下,同步請求會對開發人員更有用? – 2013-05-01 23:47:35

+1

當事情需要按順序發生時,或者一個請求取決於另一個請求的運行結果。 – 2013-05-01 23:48:59

+1

@Mark:即便如此,其他方式可以輕鬆鏈接異步請求(關鍵字:承諾,隊列) – 2013-05-01 23:51:53