正如我們所知,瀏覽器是單線程的,它可以呈現UI或執行JavaScript片段。 (webworker是使其成爲多線程的可能方式,但讓我們堅持默認行爲)。Javascript和jQuery Ajax - 它是如何工作的?
我有什麼想知道的是,當我們做一個jQuery的AJAX調用
$.ajax(....)
它不會阻止JavaScript的線程,它是如何發生的呢?
1)瀏覽器在向服務器發送請求時做了什麼?
2)當服務器用數據響應時,允許Javascript監聽這樣的事件以允許承諾實現的處理程序是瀏覽器的實現。
我在問這個問題,因爲我注意到,推薦使用AsyncTask框架爲Android中的文件下載創建一個單獨的線程。爲什麼Android不能像Javascript那樣實現。
當您提到瀏覽器本身(chrome.exe,Iexplore.exe)確實使用多線程來處理/運行ajax(我們正在討論顯然確實使用多線程的exe程序)。 是否有任何資源可以指向它,顯示此特定調用在瀏覽器上使用多線程? –
@SteveNg這可以很簡單地檢查。只需打開一個Ajax命令而不從服務器釋放它,然後打開(通過setTimeout)另一個。你會看到它正在工作。所以必須有另一個線程。 –
@SteveNg(再次 - 不是js循環單線程,而是應用程序線程) –