ajax请求后台阻塞问题

写了两个AJAX函数,第一个用于导入数据,同时将进度信息写到全局变量中,第二个每隔一秒种获取全局变量的进度信息

但是为何第二个ajax一定要等到第一个结束时才会去执行?

  1. 设置过jquery AJAX的async 为te,即异步执行

  2. 第二个ajax(获取进度信息的), 就算我随便返回个值(非session)里面的都不会去调用后台方法, 直到第1个执行完成才会进来。 也不是session的问题。。。

那么真的很奇怪啊, 大神速来~~~

3个回答

解决了,需要配置访问的servlet和访问servlet过程中使用到的filter为异步,再调用request.startAsync()开启异步

应该跟 js 的异步任务执行的机制有关,异步任务会在队列中等待,不会并行执行的,需等待主线程空闲后才去执行。
多个异步任务,本质上也是顺次执行的。

一种方法是使用Worker单独轮询,另一种是使用隐藏iframe上传文件,再在页面js中ajax轮询

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

ajax请求过多导致js代码阻塞问题,求助

首先,我有这么一个需求。 需求:遍历局域网内所有IP查找服务器IP。 实现:通过for循环向每个IP发送ajax请求,前端成功接受到服务器返回的数据说明当前请求的IP为服务器IP地址。 问题:由于向局域网内所有IP都同时发送了ajax请求,一共250多次,导致js代码以及ajax请求阻塞。 有没有什么比较好的办法能够解决ajax请求不响应的问题.. 贴一下代码 for(var i = 0;i<ipUseableArray.length;i++){ var serverIp = ipUseableArray[i]; var ipport = serverIp+":8888"; that.autoGetServerIp(ipport,serverIp); // console.log(ipport); } // console.log('it in,'+'ipport:'+serverIp+',serverIp:'+serverIp); var that = this; //connect to server tempAjax = $.getJSON( "http://"+ipport+"/CLC/CLCServicer?methodName=connecttoserver&jsonpCallback=?", function(data){ // console.log(data+','+ipport); if(data.result == "true"){ // console.log(ipport+'scan success'); $('.ip-list').append('<p>'+serverIp+'</p>'); that.isScanIp = true; } } --------http://ask.csdn.net/# 自己用一个setTimeout函数这么处理过,发送请求后马上设定一个settimeout函数,3秒后将ajax对象abort()掉,没什么实际效果区别

关于ajax的xmlhttp同一页面多次使用

我查了xmlhttp多次使用只发送一次的解决方案是在xmlhttp.open()的第二个参数中加上个随机数,但是按照文章分析的过程,每次xmlhttp.open()中的第二个参数的这个页面都会缓存,那如果加上随机数的话,多次发送岂不是越缓存越多??我这样理解对吗?如果对有什么更好的办法?

asp.net mvc ajax长轮询阻塞问题

问题是这样的 1.打开网站项目,重新生成,ok,打开网页,网页马上向后台发送一个ajax长轮询。 2.vs后台的TestController(继承自AsyncController)下的public Task<ActionResult> GetData 方法处理这个ajax请求,有结果就返回结果,没有结果的就1分钟后返回结果。 问题就出现在这里,我如果在同一个浏览器下,访问同一个域名网页,就会阻塞,直至我的ajax异步返回结果的一瞬间,才能响应其他请求。而ajax再次发送请求的时候,继续阻塞。 这时我想到是不是我后台写错了,AsyncController没起作用,但是最诡异的事情发生了:假如我这时候重新生成解决方案后,不但不再阻塞我其他的网页请求,而且我的旧页面(重新生成项目后并没有刷新页面)的轮询还能正常继续。 好了,说了这么多,答案是不是我重新生成项目的时候,因为Session也被同时清除了,所以就能既能轮询,也能响应其他请求了。如果真的这样的话,我的异步controller还有意义吗?除了清除Session,还有其他办法不阻塞浏览器的会话吗?

使用ajax发出的请求成功后再次发出一个请求到tomcat,前后是同一个线程处理吗

tomcat的请求处理是采用线程处理请求的,当有一个请求过来,tomcat会指派一个线程来处理 请求,有个疑问想请教下大神,当一个请求使用ajax发出,这时候tomcat会派一个线程 来处理请求,等这个请求处理成功返回到前端js,前端ajax判断成功,这时候ajax再次发送 一个请求到tomcat,这时候tomcat处理请求还是第一次处理的那个线程来处理请求吗? 还是重新派一个线程来处理? 主要是考虑到java的ThreadLocal使用。 ``` Ajax({ url: contextPath + "/mobile/findKhh/result", data: { zjbh: zjbh, khxm: khxm, yzm: yzm, }, beforeSend:function(){ }, success: function(data){ if(data.success) { Ajax({ url: contextPath + "/mobile/findKhh/getGdzh", data: { khh: khhs }, success: function(data){ if(data.success) { var html = template('gdzhTemplate',data); $('#gdzhResult').html(html) }else { } } }); } } }); ``` 比如上面这段ajax请求代码,前后两次请求,tomcat处理请求线程会是同一个线程吗

前端终止ajax请求时如何同时终止后端的操作?

比如,我前端请求10条数据,后端已经接受请求并开始检索数据,这个时候我终止了请求, 那么java后端如何停止正在执行的任务?

多次Ajax请求后,浏览器会停止请求

我在前台用了一个定时器,每隔5秒,就调用后台的一个服务,结果半个小时左右,浏览器就停止再发送请求,服务器仍然正常运行。只要刷新浏览器,它又会发送请求了。哪位大神可有类似情况?

提交请求后台(javaweb tomcat)无法获取参数

这是一个让我崩溃的问题: 这个问题发生在一个平板电脑A上,用这个平板A提交数据(ajax的POST/GET和from表单)只要内容长度超过1440个字符请求到后台服务 会阻塞可能几十秒,然后我在后台什么参数也获取不到,但用另一个平板电脑B(其它品牌)的话可以正常提交,这时两台平板在同一网络环境N。下面是我处理的过程 1、平板A直接连接我手机热点,提交正常。但只要切换回网络就是不行,平板B怎么都是正常的。 2、让平板A连接上fiddler4软件的代理,查看网络请求,这时候提交又正常。网络还是使用的之前提交不了的网络。 3、然后我用nginx开了代理让平板A通过nginx提交OK。 4、后台服务我更换过tomcat版本,平板A不能提交。 5、后台服务我换为jetty,平板A不能提交。 通过这些处理还是不知道问题在哪?但奇怪的是平板A上我上传文件到OSS上没有一点问题,但上传到我自己的后台服务就不行。心累!!

ajax异步处理时,想要停止后台处理该如何实现,求大神帮忙

js中有个方法 $.ajax({ //一个异步的方法,且很耗时 url:..., ... async:true, success : function(data){ ​ ​//todo:..... ​} }) 在这个方法被调用的时候,我点击一个按钮,想跳转到其他页面(window.location.href = ".../a.html"),但是页面一直无法跳转 请问,在跳转时该如何停止ajax的请求,直接跳到下一页??

servlet请求阻塞怎么办?

两个ajax同时向后台请求数据,servlet收到请求后只会先执行完毕一个请求之后,才会执行另一个请求的方法

c# mvc框架, 前端提交一个ajax后,后端需要耗时很长(20分钟以上)前端会一直转loading条

后台会一直循环添加数据,这个数据量非常巨大,而前端的页面就一直卡在那个页面不动。

跨域的错误,后端已经设置cors,但是前端这里还是报跨域的错

![图片说明](https://img-ask.csdn.net/upload/202004/14/1586834358_586962.png) 我知道接口的端口不同,倒是这个端口是本地编辑器给的,我改不了, 求大神解决,前端小白一个

并行访问接口流被关闭

``` res: (respnse) => { console.info(respnse.result.active) let url = respnse.result.active == 'dev' ?'http://10.68.105.145:8081/sxhblh-boot/trainmanage/trainInfo/visitImg?imgName=' + respnse.result.url :'http://ctg.com.cn:8081/sxhblh-boot/trainmanage/trainInfo/visitImg?imgName=' + respnse.result.url return url }, ``` @GetMapping("visitImg") @ResponseBody public synchronized void visitImg(String imgName,HttpServletResponse response){ String path; InputStream inputStream = null; BufferedInputStream bufferedInputStream = null; BufferedOutputStream bufferedOutputStream = null; try { path = "img"; inputStream = FtpClientUtil.readFile(imgName,path); bufferedInputStream = new BufferedInputStream(inputStream); bufferedOutputStream = new BufferedOutputStream(response.getOutputStream()); byte[] buf = new byte[1024 * 1024]; int length = 0; while ((length = bufferedInputStream.read(buf)) != -1) { bufferedOutputStream.write(buf, 0, length); bufferedOutputStream.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { inputStream.close(); bufferedInputStream.close(); bufferedOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` ``` 如第一段代码所示,这是上传图片后的回调,给图片设置src,可以看到,所有的图片访问调用的都是同一个接口visitImg,参数为imgName,现在的问题是,上传多个图片后,始终只能显示第一个图片,后面的图片都无法显示,后台报错stream closed流关闭,但是我打了断点之后,会进多次断点,并且图片都能显示,然后我在想是不是打了断点之后,上一次请求阻塞下一次请求,使得本来所有图片的访问从并行变为了串行,由此思考我想到了一个解决办法,给方法加上锁synchronized,问题解决了。问题是解决了,但是问题的本质我还是没有弄懂,1、为什么并行访问接口会导致stream closed流被关闭,2、还有没有更好的解决办法(一开始还想在前端设置请求队列,但是请求是以src的形式,所以放弃了),还请各位大神们赐教

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

C++语言基础视频教程

C++语言基础视频教程

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

Python数据分析与挖掘

Python数据分析与挖掘

微信小程序开发实战之番茄时钟开发

微信小程序开发实战之番茄时钟开发

软件测试2小时入门

软件测试2小时入门

相关热词 c#树形选择 c#中类图的使用方法 c# 传参 调用exe c# 怎么定义方法 c# 修改本地时间 c#前台怎么读取资源文件 c# xml转list c#实现框选截图 m*m乘法表c# c# 乘法99表
立即提问