是否保证按顺序接收后续的AJAX请求?

lms*_*lms 7 jquery tcp http

我有一个应用程序,用户可以在其中更改切换值truefalse使用一个小切换开关/按钮,更改会自动发送到服务器,而无需用户明确按下"保存"之类的内容.

现在,如果用户快速连续按两次切换开关,服务器是否可能无序接收数据包,从而最终存储错误的值?服务器是指服务器上运行的app逻辑,而不是OS网络堆栈.

我知道TCP数据包是编号的,因此接收操作系统在将它们传递给应用程序之前对它们进行排序,并且HTTP在TCP之上运行.然而,我很好奇的部分是在什么情况下HTTP创建/不创建新的TCP连接.

NB我正在使用jQuery发送AJAX请求,我假设它们保证以与调用jQuery库相同的顺序发送.这个假设有效吗?

Sam*_*lle 5

http协议中没有这样的保证.即使某些实现可能实际上保证它,您也不应该依赖它.

您可以这样做:维护点击次数(或者如果您愿意,可以将其称为版本号),然后将其发送到服务器.在服务器上,更改状态时存储最新版本号,并使用此编号检查是否从不覆盖更新的值.

  • +1 JavaScript是单线程的,因此jQuery将按顺序发送请求,但是当请求到达服务器时没有这样的保证.在实践中,他们几乎总是但不会写任何依赖它的逻辑. (3认同)