Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种方法可以执行fire和遗忘AJAX请求?_Javascript_Jquery_Ajax_Browser - Fatal编程技术网

Javascript 有没有一种方法可以执行fire和遗忘AJAX请求?

Javascript 有没有一种方法可以执行fire和遗忘AJAX请求?,javascript,jquery,ajax,browser,Javascript,Jquery,Ajax,Browser,我正在开发一个网络应用程序。当程序切换频道时,它会向使用旧频道的服务器发送一个“关闭”AJAX请求。当服务器响应时,应用程序只向服务器发送一个“打开”请求以打开一个新频道。大多数情况下,此关闭等待完成打开等待完成循环运行速度足够快,但在特殊通道的情况下,关闭时间超过5秒,这是不可接受的 我为这些通道的“关闭”请求设置了一个短超时,它会返回,但新的“打开”请求会挂起,直到服务器响应旧的“关闭”请求,所以超时只是将问题推到了一边 我已经为长关闭设置了setTimeout(),因此当我的程序调用“关闭

我正在开发一个网络应用程序。当程序切换频道时,它会向使用旧频道的服务器发送一个“关闭”AJAX请求。当服务器响应时,应用程序只向服务器发送一个“打开”请求以打开一个新频道。大多数情况下,此关闭等待完成打开等待完成循环运行速度足够快,但在特殊通道的情况下,关闭时间超过5秒,这是不可接受的

我为这些通道的“关闭”请求设置了一个短超时,它会返回,但新的“打开”请求会挂起,直到服务器响应旧的“关闭”请求,所以超时只是将问题推到了一边

我已经为长关闭设置了setTimeout(),因此当我的程序调用“关闭”时,它会被延迟,新的“打开”会在它之前执行,但它也只是抛出了一个问题,当setTimeout()命中时,会有一个长请求“在后台”,它会吞噬浏览器的ajax请求池,幸运的是,导致伪ajax在随机ajax请求时挂起

应用程序对“关闭”请求的结果不感兴趣,因此即使请求失败,也可以将其删除

执行这种fire and forget AJAX请求的最佳实践是什么


(我在Linux上使用Chromium浏览器,但应用程序也应该在Firefox上运行。)

您可以使用servlet 3.0异步功能。您可以立即提交关闭请求的响应,并启动新线程进行进一步的服务器处理。 您可以参考下面的链接,了解有关同一问题的更多信息。

向服务器脚本发出ajax请求。使用serwer脚本curl-close。这样,您可以快速返回,服务器端将负责关闭。服务器端技术是什么?你能控制这一切吗?似乎最简单的选择是更改“关闭”服务器端方法以生成新的线程/进程/后台工作程序并立即返回。是的,我对服务器端的访问有限,我可以使用JSP。这似乎是服务器端修复程序……甚至不确定OP的应用程序是否在Java上运行。(JS!=Java)当我回答时,我看到在最初的问题中提到了Java、tomcat和jsp。也许,它甚至不能在客户端解决。谁知道acutal和future浏览器是如何工作的呢。我先试试,然后结束这个问题。