尝试在内部理解AJAX模型。 根据{{3}}
在客户端 - 服务器协议(如HTTP)中,会话由三个组成 阶段:
- 客户端建立TCP连接(或适当的 连接,如果传输层不是TCP)。
- 客户端发送它 请求,并等待答案。
- 服务器处理请求, 发送回答,提供状态代码并适当 数据。
醇>
这如何适合AJAX呼叫?
是否在后台与服务器保持连接(在不同的线程中),以便浏览器不会被阻止并可以执行其他操作?
然后,当服务器的结果准备就绪时,它会按下浏览器 通过这个隐藏的'连接和浏览器然后更新DOM?
我的意思是,是否存在由AJAX维护的开放会话,或者它是否关闭并打开连接/会话,因为HTTP协议是无状态的?
答案 0 :(得分:1)
你在谈论什么课程? http / 2应用程序通常会实现至少4个会话层(但有些人仍尝试根据OSI模型对其进行描述)。
就执行线程而言,页面上的JavaScript作为单个线程运行。但是,如果open方法的第三个参数为true,则在xmlhttprequest对象上调用send时,不会阻塞该线程。如果为false,则send()将阻塞,直到获得响应。对于异步方法,您将分配一个操作,以便稍后在请求对象触发事件时执行。 xmlhttprequest和底层网络堆栈之间的接口的低级处理就好像它是一个自治的执行线程,但可能在select()/ poll()操作中作为单个线程实现 - 这是在浏览器中实现的代码,因此只有在您正在编写浏览器时,问题才有意义。