【发布时间】:2012-09-28 22:07:04
【问题描述】:
如果 Javascript 不是多线程的,AJAX 请求如何异步处理?
实现浏览器是特定的吗?
【问题讨论】:
标签: javascript ajax multithreading browser asynchronous
如果 Javascript 不是多线程的,AJAX 请求如何异步处理?
实现浏览器是特定的吗?
【问题讨论】:
标签: javascript ajax multithreading browser asynchronous
浏览器执行模型基于“事件循环”的概念。只有一个线程服务于事件(稍微过于简单化)。当事件发生时,会依次调用处理程序。
Ajax 只是一种导致某些事件的机制。设置 HTTP 请求是同步的,但只是设置而已。浏览器通过在发生时触发事件来响应表示从服务器返回数据的网络通信。
现代浏览器稍微复杂一些,因为每个窗口可能有自己的进程(或其他一些系统级“线程”结构,一般来说)。此外,新的“网络工作者”功能允许单独的类似线程的隔间同时运行。
【讨论】: