如果Javascript不是多线程的,那么AJAX请求如何变为异步?
实施浏览器是否具体?
答案 0 :(得分:8)
浏览器执行模型基于“事件循环”的概念。只有一个线程服务事件(略微过度简化)。当事件发生时,将按顺序调用处理程序。
Ajax只是一种导致某些事件的机制。设置HTTP请求是同步的,但只是设置它。浏览器通过在发生事件时触发事件来响应表示来自服务器的返回数据的网络通信。
现代浏览器有点复杂,因为每个窗口都可能有自己的进程(或者一些其他系统级“线程”结构)。此外,新的“Web worker”功能允许单独的线程状隔间同时运行。