我已阅读到HTTP是同步协议。客户端发送请求并等待响应。客户端在发送下一个请求之前等待第一个响应。 Ajax使用HTTP协议,但相比之下是异步的。我也读过
异步请求阻止客户端,直到从here完成操作为止。我很困惑,我的问题是:
1.谈论HTTP协议时,同步的定义是什么?
2.同步是否与阻止相关?
答案 0 :(得分:2)
异步意味着您执行一个HTTP请求,但是您没有等到答案到达。当它到达时,您将进行处理,并且可以在其间自由进行其他操作。意思是:您不阻止执行其他任何操作。
另一方面,“同步”是指您执行请求并等待答案,然后再执行其他操作。含义:您正在阻止您的应用程序执行其他操作。答案 1 :(得分:1)
HTTP作为协议是同步的。您发送请求,等待响应。与其他协议相反,在其他协议中,您可以通过同一连接快速连续发送数据,而无需等待对先前数据的响应。请注意,HTTP/2实际上更像是沿着这些路线。
话虽如此,您可以通过单独的连接并行发送多个独立的HTTP请求。 HTTP请求没有“全局”锁定,它只是每个打开的连接的单个HTTP请求/响应。(同样,HTTP / 2对此有限制)。
现在,从Javascript应用程序的角度来看,HTTP请求是异步的。这意味着Javascript将HTTP请求发送到服务器,并且它的响应将在稍后到达。同时,Javascript可以继续处理其他事情,并且当HTTP响应进入时,它将继续努力。这是异步Javascript执行。 Javascript 可以选择等待直到HTTP响应返回,同时阻塞其他所有内容;但这非常糟糕,因为与您在此期间可以完成的所有其他操作(例如,使UI保持响应状态)相比,HTTP响应可能花费relative eternity。