ajax - HTTP 同步性质

标签 ajax http synchronous

我读过 HTTP 是一种同步协议(protocol)。客户端发送请求并等待响应。客户端在发送下一个请求之前等待第一个响应。 Ajax 使用 HTTP 协议(protocol),但相比之下是异步的。我也读过 同步请求阻塞客户端直到操作从here完成.我很困惑,我的问题是:

  1. 在谈到 HTTP 协议(protocol)时,同步的定义是什么?
  2. 同步是否与阻塞相关?

最佳答案

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/

相关文章:

Javascript AJAX 调用 SpringBoot Controller 并获取 JSON 响应

java - 如何在 Orientdb 中使用 HTTP 创建顶点和边?

php - Drupal 网站给出 404 但页面正在显示

javascript - 与内部另一个事务同步的WebSQL事务

Javascript.Run 同步多重 promise

javascript - PHP - 为 Ajax Post 的表单数据附加新值

jquery - 在单个请求中下载多个文件 (jQuery/Python)

php - 如何使用AJAX获取评论系统中的当前页面ID

java - 从 Java (Apache HttpClient) 管理与 ASP.NET 站点的 session

ajax - jQuery:执行同步 AJAX 请求