2012-04-03 29 views

回答

2

是的,瀏覽器引擎正在對Ajax進行非阻塞I/O調用(當您執行非阻塞ajax調用時)。

瀏覽器有多種不同的方式可以實現ajax網絡。我們唯一知道的就是ajax I/O請求不會阻塞JavaScript線程。而且,每個瀏覽器都可以自由地以不同的方式實現它,只要它們不會阻止JS執行線程以及在ajax調用期間保持瀏覽器正常工作所需的任何其他線程。

在瀏覽器內部,它可能使用單獨的OS線程以阻塞的方式在該線程上運行ajax調用,它可以在單獨的線程上使用非阻塞I/O,它可以在JavaScript解釋器線程上使用非阻塞I/O(可能不太可能,但可能)。它甚至可以使用一個獨立的流程來管理與IPC之間的網絡操作以在它們之間進行通信。它選擇的完全取決於瀏覽器實現,因爲這些方法中的任何一個都可以讓javascript解釋器繼續運行,而ajax網絡異步發生。不同的瀏覽器也可能有不同的實現。

Chrome對於其他瀏覽器不支持的瀏覽器窗口使用單獨的進程。

+0

我確實認爲它可能使用了其中一種機制,但我想知道一個具體的例子,比如firefox(比如說)JS引擎使用的。 – Durin 2012-04-03 17:51:00

+0

@AnirudhTomer - 你真的想解決什麼問題? Firefox源代碼是開源的。人們最終可以找到相關的代碼,看看它是如何工作的,如果你需要知道。我不知道我的頭頂,只是我不明白它使用哪種技術是多麼重要。 – jfriend00 2012-04-03 17:54:52

+0

嗯,我對網絡技術很陌生,我正在考慮AJAX如何工作,所以我只想把這個問題放在這裏。 你!發佈這個問題後,我做的第一件事就是下載FF代碼並檢查出我需要的東西。它有什麼關係:好!除非我知道它在內部是如何工作的,否則渴望依然:)無論如何,感謝回覆 – Durin 2012-04-03 18:07:35