2014-09-23 40 views
0

我知道JavaScript是單線程的。如果你有一個AJAX調用,那麼它會被添加到消息隊列中,並且JavaScript會在它可以處理的時候處理它。說我有這樣的功能:AJAX服務器端處理能否併發運行?

function TestAjax 
{ 
    //AJAX asynchronous call 1 
    //AJAX asynchronous call 2 
    //AJAX asynchronous call 3 
} 

說上面的代碼中增加了三個HTML表格的網頁(每個函數添加一個表),那麼我認爲AJAX異步調用3可以生產出第一臺即使它最後被添加到消息隊列中。

我想了解三個調用是否可以同時運行,因爲AJAX調用是在服務器上生成內容。

+0

當然,他們爲什麼不呢? – Bergi 2014-09-23 19:20:53

+0

@Bergi,我對異步代碼,消息隊列和JavaScript比較陌生。消息隊列是否有單獨的線程? – w0051977 2014-09-23 19:23:55

+0

想一想:有300萬人試圖訪問你的網站,你有Apache + PHP(或者其他什麼,它並不重要)。所有這些查詢都會被同時回答嗎?爲什麼不會AJAX電話呢? – tfrascaroli 2014-09-23 19:24:28

回答

2

是的,他們可以在同一時間運行,你可以體驗「交錯」的結果(如第二次完成之前)。這完全取決於服務器端需要多少處理。如果你的第二個調用是返回一個空字符串的函數,但是你的第一個調用查詢一個大型數據庫,你可以期望在你的數據庫結果之前返回空字符串。

爲什麼你特別關心他們完成的順序?

+0

謝謝,我不關心它。我只是想了解這個過程。 +1。 – w0051977 2014-09-23 19:31:16

+0

@ w0051977請記住點贊任何幫助你的答案,並接受最能回答你問題的答案。這有助於有相似問題的未來用戶更輕鬆地找到最佳解決方案。 – 2015-12-29 13:50:22

+1

我是這個問題的兩位選民之一。我最近更好地理解這個主題,我相信你的回答寫得很好。因此,我現在將這個問題標記爲已回答。感謝您的提醒。 – w0051977 2015-12-29 15:50:15