This question似乎暗示Ajax请求无法保证以发送的顺序返回。但是,Ajax使用TCP protocol,这似乎可以保证数据包将以发送的顺序返回:
有序数据传输 - 目标主机根据序列号重新排列
异步Ajax请求是否保证按发送顺序返回?
答案 0 :(得分:3)
没有
这与TCP无关。这是因为请求必须由HTTP服务器处理,并且无法保证并行请求将花费相同的时间来完成。
答案 1 :(得分:1)
异步Ajax请求是否保证按发送顺序返回?
不。如果服务器响应第一个请求需要3倍的话,该怎么办?例如:
答案 2 :(得分:1)
我相信你在这里混淆两个上下文,如果你发出两个请求,在ajax,在“相同”的时间,一个不能保证在另一个之前返回。这与TCP无关,TCP位于OSI模型的不同层。 TCP数据包构成流量,并且“重新排序和重新排列”对http协议(ajax是其中的一部分)完全不可见。
答案 3 :(得分:0)
术语“异步”回答了您自己的问题。但是,在某些情况下,异步请求可以有效地变为同步。有关详情,请参阅t his answer。
发送请求时,服务器将开始处理该请求。如果出现另一个请求,服务器将开始处理它(如果可以),依此类推。当每个请求完成时(有或没有输出),您的回调将被触发(如果存在)。
答案 4 :(得分:0)
保证按顺序接收与单个TCP请求有关的所有数据包。此排序仅适用于单个请求。可以向多个主机发送多个请求,通常无法保证您将从与之交互的主机接收响应的顺序。因此,在发送异步请求时,您实际上是并行发送多个请求,并且无法保证响应请求的顺序,因为每个请求都独立于所有其他请求。
答案 5 :(得分:0)
Ordered data transfer — the destination host rearranges according to sequence number
你是对的......但是要脱离背景。 AJAX请求是通过HTTP进行的,而HTTP则依赖于TCP。
每个AJAX请求都是一个不同的HTTP请求,而这个请求依次是不同的TCP连接,因此它们不会按照您认为的方式重新排列和排序。
由于每个AJAX HTTP请求可能需要花费不同的时间来处理,并且它们正在同时处理,因此无法保证它们完成的顺序。