点一个按钮,则向服务器请求资源,不作处理时,多次点击后会有很多个请求在等待。我们知道一般我们用ajax是异步请求,那么我们快速重复点击一个按钮得到的结果其实我们并不知道是哪次点击的结果可能是第一次可能是最后一次也可能是第二次。那么我们怎么解决这个问题呢,简单粗暴的方法就是在发送请求的时候将按钮disabled在请求完成成功之后解除disabled,那么一旦请求失败请求将一直处于pending状态, 因此考虑的情况就多了success,error,complete等事件,而且不利于用户体验。ajax的abort方法可以很好的解决这个问题,但是使用这个abort();方法取消的时候,实际上会触发$.ajax success事件,所以在success是的回调函数需要添加判断ajax请求是否存在,存在才执行回调函数。

  我们项目上在使用ajax的时候是封装好的方法,在使用abort方法的时候考虑到可能出现多个请求同时进行,那么我们在封装的ajax方法里边是没有办法使用abort方法的,因为统一的方法只能执行一个请求(当然这是我们项目里边的方法是这样字的,大家可以根据自己封装的ajax方法进行综合考虑是用什么方法)。

  在解决重复请求的问题我们采用了单个问题单个解决的方法(当然这可能不是最好的方法,待优化~)

  1.定义一个全局变量var flag=0//用来记录点击次数;

  2.点击方法

    function requestEvent(){

      flag++;

      ...

      //ajax请求的回调函数

      callbackFun:(

        function(a){

          if(a<flag){

            return;

          }//判断当前回调函数是否是最后一次请求

          cb(res);//执行回调成功的函数方法

        }

      )(flag)

    }

  这里并没有取消重复请求而是只执行了最后一次请求的回调函数,菜菜一枚~大家有好的方法欢迎交流

转载于:https://www.cnblogs.com/lovelyRabbitBaby/p/6232984.html

利用闭包实现多次ajax请求只执行最后一次相关推荐

  1. php判断ajax传入,利用PHP判断是否为AJAX请求代码

    对于一些API接口,通常检测是否为AJAX请求,一定程度上能提高下安全性. 先说前端使用 jQuery 时怎么区分: jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Request ...

  2. php多次请求只执行最后一次,取消重复请求,只让最后一次请求通过

    axios 请求拦截 取消重复请求(多次重复异步,结束pending状态) 前端开发中,会涉及很多异步事件处理,页面展示的处理关系最密切的就是loading图层,但是loading交互在一些时候会不太 ...

  3. struts2 ajax请求发现执行action两次原因

    struts2中使用json插件执行ajax处理时,如果方法名是get方法的时候,方法会莫名其妙的执行两次. 原因: struts2 中JSON的原理是在ACTION中的get方法都会序列化,所以前面 ...

  4. app息屏后ajax请求不执行_息屏时钟app下载-息屏时钟软件下载v1.0 安卓版

    息屏时钟app是一款息屏后可以在手机上显示各种时间的app,软件中可以感受全新的主题桌面,美化手机屏幕,不需要唤醒手机也能查看时间,软件的功能众多,还可以设置不同的息屏画面,超多内容可以体验,快来试试 ...

  5. 多ajax请求的各类解决方案(同步, 队列, cancel请求)

    ajax带来很好的用户体验,于是一个稍微注重web系统使用ajax基本成为必然.当传统功能型web项目向用户体验型项目转变时,层出不穷的需求就来了.正如本篇所介绍的就是一个多个AJAX请求的情况下,如 ...

  6. React基础-React中发送Ajax请求以及Mock数据

    前言 在 React 中, render 函数返回的结果,取决于组件的 props 和 state 我们都知道 UI 页面上的数据不是写死的,往往是从后端的数据接口中拿到的 然后将真实的数据填充到页面 ...

  7. React学习(九)-React中发送Ajax请求以及Mock数据

    虽互不曾谋面,但希望能和你成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 撰文 | 川川 VX-ID:suibichuanji 点 ...

  8. 一次ajax多次回调结果,使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享...

    我知道这些函数都是异步执行(asyncronously)并且会延迟一段时间返回,所以我想知道是否有一种方式,使我可以使用单个回调,并行地加载它们,就像JS加载器 curljs 所做的那样. 很幸运! ...

  9. ajax请求 拦截窗口,ajax请求成功后新开窗口window.open()被拦截解决方法

    ajax请求成功后新开窗口window.open()被拦截解决方法 问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但 ...

最新文章

  1. 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
  2. java zip打包与乱码的解决
  3. 机器学习经典算法之线性回归sklearn实现
  4. 高精度运算模板(大数模板)
  5. 深入理解java虚拟机JVM(上)
  6. Spring Boot系列教程四:配置文件详解properties
  7. python反转字符串的六种方法
  8. Google 正在“跟踪”你
  9. C++ 继承与组合的区别
  10. 深入理解Java虚拟机:虚拟机类加载机制
  11. Javawbe的实战案例
  12. optim优化器的使用
  13. 数组里面有值,但是console.log出来后打开却是空
  14. 32位MIPS流水线CPU设计
  15. 查看索引是否命中oracle,Oracle索引命中与扫描规律总结
  16. Linux kernel内存管理之OOM相关参数
  17. 波动方程数值求解(一)
  18. 美的华为鸿蒙,美的鸿蒙家电正式上线!华为鸿蒙系统,你很快就能用上!
  19. Decentralized Applications
  20. 蓝牙le和经典蓝牙区别_Android上的蓝牙LE数据包捕获

热门文章

  1. java中的Random()注意!
  2. java 自带thread分析工具_java自带的jvm分析工具
  3. 浅析Hyperledger Fabric共识算法
  4. 软件开发 自由职业_自由职业? 这里有7个可以出售软件开发服务的地方
  5. MongoDB数据库(一:基本操作)
  6. js同时打开两个连接
  7. AlexNet 网络详解及Tensorflow实现源码
  8. Python fabric实现远程操作和部署
  9. android圆形旋转菜单,而对于移动转换功能支持
  10. Apache2.4+Tomcat7集群搭建