如何避免快速点击造成发送多次请求

我们都知道input,button都可以有disbled属性,如果一个图标上有onclick事件,(PS:本来以为自己的想法还挺特别,随便查了点资料就白扯了,革命还需努力啊......),我们可以写成

<input type="image" src="???" id="???">

当onclick事件触发后,我们给他加一个disabled属性,现在我们通常都是通过ajax异步发送请求,当请求成功之后我们再移除disabled这个属性,这样可以减轻服务器压力,也会避免前端一些未知的bug

参考网上其他大神的总结:http://www.cnblogs.com/luckyXcc/p/5804650.html

1> 定义标志位:
 点击触发请求后,标志位为false量;请求(或者包括请求后具体的业务流程处理)后,标志位为true量。通过标志位来判断用户点击是否具备应有的响应。

2> 卸载及重载绑定事件:
点击触发请求后,卸载点击事件;请求(或者包括请求后具体的业务流程处理)后,重新载入绑定事件。

3> 替换(移除)按钮DOM
点击触发请求后,将按钮DOM对象替换掉(或者将之移除),自然而然此时不在具备点击事件;请求(或者包括请求后具体的业务流程处理)后,给新的按钮DOM定义点击事件。

在项目的具体实现中,我对用户点击的频度加了限制,看了以上的总结知道我的方法原来有个名词叫节流函数,eg:

var lastClickTime = new Date().getTime();
function isFastClick(interval){
  let time = new Date().getTime();
  if(lastClickTime + interval >time){
    return false;
  }else{
    lastClickTime = time;
    return true;
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 表单基础知识 在HTML中,表单是由 元素来表示的,而在JS中,表单对应的则是HTMLFormElement类型。...
    oWSQo阅读 922评论 0 1
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,120评论 1 10
  • 浮世三千,吾爱有三,日月与卿。日为朝,月为暮,卿为朝朝暮暮。 J'aime trois choses dans c...
    MisS烨阅读 473评论 0 0
  • 编写自定义插件需要继承ReactContextBaseJavaModule和实现ReactPackage接口, 具...
    hubcarl阅读 1,048评论 0 2
  • 写在前面 离上个版本更新没多久,估计也就2周的样子,app改动也不大,主要是改了些bug,但是今天archive之...
    凉风起君子意如何阅读 1,022评论 3 1