2012-04-03 38 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