Javascript Ajax请求是否保证按发送顺序返回?

Javascript Ajax请求是否保证按发送顺序返回?,javascript,ajax,asynchronous,tcp,protocols,Javascript,Ajax,Asynchronous,Tcp,Protocols,似乎表明Ajax请求不能保证按其发送顺序返回。但是,Ajax使用了,这似乎保证了数据包将按其发送顺序返回: 有序数据传输-目标主机根据序列号重新排列 异步Ajax请求是否保证按发送顺序返回?否 这与TCP无关。这是因为一个请求必须由HTTP服务器处理,并且不能保证并行请求需要相同的时间来完成。否 这与TCP无关。这是因为一个请求必须由HTTP服务器处理,并且不能保证并行请求需要相同的时间来完成 异步Ajax请求是否保证按发送顺序返回 没有。如果服务器响应第一个请求所用的时间是第一个请求的3倍呢?

似乎表明Ajax请求不能保证按其发送顺序返回。但是,Ajax使用了,这似乎保证了数据包将按其发送顺序返回:

有序数据传输-目标主机根据序列号重新排列

异步Ajax请求是否保证按发送顺序返回?

这与TCP无关。这是因为一个请求必须由HTTP服务器处理,并且不能保证并行请求需要相同的时间来完成。

这与TCP无关。这是因为一个请求必须由HTTP服务器处理,并且不能保证并行请求需要相同的时间来完成

异步Ajax请求是否保证按发送顺序返回

没有。如果服务器响应第一个请求所用的时间是第一个请求的3倍呢?例如:

时间0:请求已发送 时间1:请求B已发送 时间2:服务器处理请求A和B 时间3:服务器处理请求A,向客户端发送响应B 时间4:服务器处理请求A 时间5:服务器向客户端发送响应 异步Ajax请求是否保证按发送顺序返回

没有。如果服务器响应第一个请求所用的时间是第一个请求的3倍呢?例如:

时间0:请求已发送 时间1:请求B已发送 时间2:服务器处理请求A和B 时间3:服务器处理请求A,向客户端发送响应B 时间4:服务器处理请求A 时间5:服务器向客户端发送响应
我认为,在ajax中,如果同时发出两个请求,就不能保证一个在另一个之前返回,这会混淆两个上下文。这与TCP无关,TCP位于OSI模型的另一层。TCP数据包构成了通信量,重新排序和重新排列对于ajax所属的http协议来说是完全不可见的

我认为,在ajax中,如果同时发出两个请求,就可能会混淆两个上下文,一个请求不能保证在另一个请求之前返回。这与TCP无关,TCP位于OSI模型的另一层。TCP数据包构成了通信量,重新排序和重新排列对于ajax所属的http协议来说是完全不可见的

术语异步回答了您自己的问题。然而,在某些情况下,异步请求实际上可能会变成同步的。更多信息请参见t


当您发送请求时,服务器将开始处理该请求。如果随后出现另一个请求,服务器将开始处理它(如果可以的话),依此类推。当每个请求在有输出或无输出的情况下完成时,您的回调(如果存在)将被触发。

术语“异步”回答了您自己的问题。然而,在某些情况下,异步请求实际上可能会变成同步的。更多信息请参见t


当您发送请求时,服务器将开始处理该请求。如果随后出现另一个请求,服务器将开始处理它(如果可以的话),依此类推。当每个请求在有输出或无输出的情况下完成时,您的回调将被触发(如果存在)。

与单个TCP请求相关的所有数据包都保证按顺序接收。但这种排序仅适用于单个请求。可以向不同的主机发送多个请求,通常无法保证从与您交互的主机接收响应的顺序。因此,在发送异步请求时,实际上是并行发送多个请求,并且不可能保证响应请求的顺序,因为每个请求独立于所有其他请求。

与单个TCP请求相关的所有数据包都保证按顺序接收。但这种排序仅适用于单个请求。可以向不同的主机发送多个请求,通常无法保证从与您交互的主机接收响应的顺序。因此,在发送异步请求时,实际上是并行发送多个请求,并且不可能保证响应请求的顺序,因为每个请求都独立于所有其他请求

Ordered data transfer — the destination host rearranges according to sequence number
你是对的。。。但要断章取义。AJAX请求是通过HTTP进行的,而HTTP又是通过TCP进行的

每个AJAX请求都是不同的HTTP请求,而HTTP请求又通过不同的TCP连接,因此它们不会按照您认为的方式重新排列和排序

由于处理每个AJAX HTTP请求可能需要不同的时间,并且它们是并发处理的,因此无法保证它们完成的顺序

你是对的。。。但要断章取义。 AJAX请求是通过HTTP进行的,而HTTP又是通过TCP进行的

每个AJAX请求都是不同的HTTP请求,而HTTP请求又通过不同的TCP连接,因此它们不会按照您认为的方式重新排列和排序


由于处理每个AJAX HTTP请求可能需要不同的时间,并且它们是并发处理的,因此无法保证它们完成的顺序。

每个请求发送/接收的数据包都遵循TCP标准,但请求本身并不遵循。感谢所有的回答。我现在更明白了。每个请求发送/接收的数据包都遵循TCP标准,但请求本身并不遵循。谢谢所有的回答。我现在更明白了。我相信这是真的,但不久前我写了一个单页应用程序,其中一个页面上有几个摘要小部件。。。加载页面时,异步发送ajax请求以加载每个小部件的内容。我知道其中一个小部件需要4-5秒才能加载;其他的都是瞬间的。所以,我按照请求发送的顺序进行操作。首先执行长时间运行的请求时,其他两个请求在收到第一个请求之前从未响应。你能解释一下吗?是的,请求是异步发送的。。。我在jQueryAjax请求上显式地设置了async:true。所有的请求都命中同一个MVC服务器。我相信这是真的,但我不久前写了一个单页应用程序,其中一个页面上有几个摘要小部件。。。加载页面时,异步发送ajax请求以加载每个小部件的内容。我知道其中一个小部件需要4-5秒才能加载;其他的都是瞬间的。所以,我按照请求发送的顺序进行操作。首先执行长时间运行的请求时,其他两个请求在收到第一个请求之前从未响应。你能解释一下吗?是的,请求是异步发送的。。。我在jQueryAjax请求上显式地设置了async:true。所有的请求都会命中同一个MVC服务器。