【问题标题】:Are Ajax requests guaranteed to return in sent order?Ajax 请求是否保证按发送顺序返回?
【发布时间】:2012-06-18 21:25:56
【问题描述】:

This question 似乎暗示 Ajax 请求不能保证按其发送顺序返回。但是,Ajax 使用TCP protocol,这似乎可以保证数据包将按发送顺序返回:

有序数据传输——目的主机按照序号重新排列

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

【问题讨论】:

  • 每个请求发送/接收的数据包都遵循 TCP 标准,但请求本身不遵循。
  • 感谢您的所有回答。我现在明白了。

标签: javascript ajax asynchronous tcp protocols


【解决方案1】:

没有。

这与 TCP 无关。这是因为请求必须由 HTTP 服务器处理,并且无法保证并行请求将花费相同的时间来完成。

【讨论】:

    【解决方案2】:

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

    不。如果服务器响应第一个请求需要 3 倍的时间怎么办?示例:

    • 时间 0:请求 A 已发送
    • 时间 1:请求 B 已发送
    • 时间 2:服务器处理请求 A 和 B
    • 时间 3:服务器处理请求 A,向客户端发送响应 B
    • 时间 4:服务器处理请求 A
    • 时间 5:服务器向客户端发送响应 A

    【讨论】:

    • 我相信这是真的,但我不久前写了一个单页应用程序,一个页面上有几个摘要小部件......当页面加载时,发送了 ajax 请求(异步)加载每个小部件的内容。我知道其中一个小部件需要 4-5 秒才能加载;其他的都是瞬间的。因此,我按照发送请求的顺序进行了操作。当第一次执行长时间运行的请求时,其他两个直到收到第一个才响应。你能解释一下吗?
    • 是的,请求是异步发送的……我在 jquery ajax 请求上明确设置了 async: true 。并且所有请求都访问同一个 MVC 服务器。
    【解决方案3】:

    我相信您在这里混淆了两个上下文,在 ajax 中,如果您在“同一”时间触发两个请求,则不能保证一个在另一个之前返回。这与位于 OSI 模型不同层的 TCP 无关。 TCP 数据包构成流量,并且“重新排序和重新排列”对 http 协议(ajax 是其中的一部分)完全不可见。

    【讨论】:

      【解决方案4】:

      “异步”一词回答了您自己的问题。但是,在某些情况下,异步请求可能会有效地变为同步。有关更多信息,请参阅 this answer。

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:
          Ordered data transfer — the destination host rearranges according to sequence number
          

          你是对的……但是断章取意。 AJAX 请求通过 HTTP,而 HTTP 又通过 TCP。

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

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

          【讨论】:

            猜你喜欢
            • 2011-03-10
            • 2018-08-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-12
            • 2023-01-27
            • 2013-01-19
            • 2021-12-18
            相关资源
            最近更新 更多