2012-01-12 49 views
1

您好我想請教一下AJAX,無論是AJAX使得同步或異步調用從它的名字Server.As是異步JS & XML,但是當涉及到發送請求到服務器,它是同步還是異步?幫助將理解Ajax是什麼類型的調用?

回答

2

我認爲這將幫助你,如果你有這方面的一個什麼同步和異步平均的定義。

同步呼叫被執行它的Javascript線程的執行。這意味着如果你有下面的代碼:

console.log('Before'); 
xhr.send(); 
console.log('After'); 

你不會看到After消息,直到請求已經完成,服務器返回的數據。

一個異步調用不阻止執行它的Javascript線程執行它。這意味着,對於上述相同的代碼塊,After消息會立即觸發,並且不會等待請求完成。由於代碼的執行繼續進行異步調用,因此您需要使用回調來處理結果。這是onreadystatechange()事件/方法的用途。

當您調用XmlHttpRequest對象的open()方法時,您可以選擇同步或異步進行哪種類型的呼叫。通過將true傳遞給第三個參數,請求是異步的,如果您通過false它是同步的。

1

實際上,它可以既,同步和異步。

+0

下面是相關規範:http://www.w3.org/TR/XMLHttpRequest/#request – jeanreis 2012-01-12 14:32:33

+0

* A *相關規範。 Ajax不限於XHR。 – Quentin 2012-01-12 14:33:04

+0

不夠公平,儘管流行詞的起源來自使用XMLHttpRequest。現在很難確切地知道每個過度誇張的詞應該是什麼意思(幸好「web 2.0」似乎已經不再流行)。 – jeanreis 2012-01-12 14:36:00

3

這是一個鬆散定義的流行詞。 JS可以做到這一點。同步呼叫是鎖定的,應該幾乎總是可以避免的。

1

實際上,它可以同時synchronuous和asynchronuous。當呼叫同步進行時,您的代碼將不會繼續,直到請求完成並收到響應。在許多情況下,這不是你想要的,因爲這會凍結你網站的所有JavaScript驅動部分。

1

請求是異步的,因爲瀏覽器不能等待請求的響應。所以這意味着一方面你可以有一個同步例如你發送你的請求並顯示一個等待屏幕,但另一方面你可以發送你的請求到服務器和服務器隨時響應。您的瀏覽器可以處理響應,但用戶可以在沒有任何影響的情況下工作。