我读过 HTTP 是一种同步协议(protocol)。客户端发送请求并等待响应。客户端在发送下一个请求之前等待第一个响应。 Ajax 使用 HTTP 协议(protocol),但相比之下是异步的。我也读过
同步请求阻塞客户端直到操作从here完成.我很困惑,我的问题是:
- 在谈到 HTTP 协议(protocol)时,同步的定义是什么?
- 同步是否与阻塞相关?
最佳答案
HTTP 作为协议(protocol)是同步的。您发送请求,等待响应。与其他协议(protocol)相反,在其他协议(protocol)中,您可以通过同一连接快速连续发送数据,而无需等待对先前数据的响应。注意 HTTP/2实际上更符合这些思路。
话虽如此,您可以通过单独的连接并行发送多个独立的 HTTP 请求。没有针对 HTTP 请求的“全局”锁定,它只是一个 HTTP 请求/响应每个打开的连接。(同样,HTTP/2 补救了这个限制。)
现在,从 Javascript 应用程序的角度来看,HTTP 请求是异步的。这意味着,Javascript 会将 HTTP 请求发送到服务器,它的响应将在一段时间后到达。与此同时,Javascript 可以继续处理其他事情,当 HTTP 响应到来时,它会继续努力。这就是 异步 Javascript 执行。Javascript 可以选择等待 HTTP 响应返回,同时阻止其他一切;但这非常糟糕,因为与您同时可以完成的所有其他事情(例如保持 UI 响应)相比,HTTP 响应可能需要相对永恒的时间。
关于ajax - HTTP 同步性质,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52252800/