博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何终止jquery的$.ajax请求,防止重复请求
阅读量:4111 次
发布时间:2019-05-25

本文共 862 字,大约阅读时间需要 2 分钟。

如果用户频繁点击ajax请求,有两个问题:

1,如果连续点击了5个ajax请求,前4个其实是无效的,趁早结束节省资源。
2,更严重的问题是:最后一个发送的请求,响应未必是最后一个,有可能造成混乱。还需要一个队列来维护发送的请求和响应。
其实已经设计好了该队列的实现方式,后来发现jQuery直接通过abort方法,这样就不需要那么复杂的实现了,毕竟还有其他事情等着完成。
用jquery发送ajax请求的确是太方便了,$.get、$.post、$.ajax等等,但我们有时候需要中途中止ajax请求。

举个例子,用comet做聊天时,发送一个请求后,服务端通常过几十秒后才会刷新链接、返回数据。假设服务端是30秒刷新一次链接,如果我们在10秒时想要停止这个ajax请求,怎么办呢?

var ajaxGet=$.ajax("url",{id:2},function(){})ajaxGet.abort();  //终止
注意:abort()后,ajax请求立即停止,但还是会执行后面的function()。如果想避免执行其中的操作,可以在function()开始位置加判断
//终止ajax请求:var ajaxPost=$.ajax("url",{id:2},function(){    if(data.length==0) return true;})ajaxPost.abort();  //终止

 

//防止重复请求:var request;if(request !=null){    request.abort();}reuest=$.get("url",{id:1},function(){    //处理})// ajax & setTimeout实现 secondTry 在等待一秒之后将firstTry的ajax终止:var firstTry=$.ajax({    //处理})var secondTry=setTimeout(function(){    firstTry.abort();},1000)

 

转载地址:http://yiesi.baihongyu.com/

你可能感兴趣的文章
Node.js-模块和包
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
管理用户状态——Cookie与Session
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
OpenCV meanshift目标跟踪总结
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
听说玩这些游戏能提升编程能力?
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
Mysql复制表以及复制数据库
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>