防抖动处理和节流 小技巧

2018-06-13 admin

1. 简单的防抖动处理,一秒内点击一次

var timer = null;
$('.coupon').click(function(){
  if (timer) {
    return;
  }
  timer = true;
  setTimeout(function() {
    timer = false;
  }, 1000);

...

})

2. 向服务器请求数据

点击按钮向后台请求数据 优化点:

var running = false;
$('.btn').on('click', function() {
  if (running) {
    return;
  }
  running = true;

  $.ajax(url, {
    complete: () => {
      running = false;
    }
  })
});

另外一些防抖动的小技巧,请参考: http://blog.csdn.net/crystal6…https://jinlong.github.io/201…

3. 封装好的简单防抖动函数

// 防抖动函数 fn要执行的函数,timeout间隔毫秒数

function debounce(fn, timeout) {
  let last = null;
  return function() {
    if (last) {
      return last.result;
    }

    setTimeout(() => { last = null; }, timeout || 1000);
    const result = fn.apply(this, arguments);
    last = { result };
    return result;
  };
}
//调用
btn.addEventListener('click', debounce(function() {
  ...
}, 1000));

4. 现成的工具库Loadash

http://www.css88.com/doc/loda… 防抖动: _.debounce

节流: _.throttle

原文链接:https://segmentfault.com/a/1190000015276444

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-33995.html

文章标题:防抖动处理和节流 小技巧

相关文章
2015年将会有大量基于HTML5和JS的WEB应用
随着HTML5的定稿,以及JS的迅速发展,我们有理由相信,在接下来的一年里,将会涌现出大量的WEB应用,网站的表现形式将不再仅仅局限于过去的形式,必将在2015年引来一次重大改革! ...
2015-11-12
百度新功能【特效搜索】演示 惊呆了小伙伴
百度搜索最近又出新玩意新功能了,可能你还没有发现,名为【百度特效搜索】已经默默上线了,有什么效果呢? 在百度搜索中根据用户搜索的关键词来出发某些动作,例如笔者搜索“打雷”关键字,在搜索结果中你会听到有打雷声, 黑洞,闪烁、翻转、跳跃,打雷,...
2015-11-12
JavaScript基本语法和规范
JavaScript是区分大小写的,使用Unicode字符集。 在JavaScript中,语句以“;”结尾。 JavaScript脚本的源文本被从左到右执行。 虽然有时“;”是不必要的,但我们建议总是在你的语句结束处添加分号;它将避免副作用...
2015-11-12
jquery拼接ajax 的json和字符串拼接的方法
整理文档,搜刮出一个jquery拼接ajax 的json和字符串拼接的代码,稍微整理精简一下做下分享。 jQuery拼接字符串ajax <form id="myForm" action="#"&...
2017-04-01
JavaScript和Java
JavaScript和Java在某些方面相似但完全不同。 JavaScript语言类似于Java但是没有Java的静态类型和强类型检查,不过它们的语法和 C 语言都很相似。 JavaScript基于原型的对象模型,而不是更常见的基于类的对象...
2015-11-12
数据类型和结构
ECMAScript标准定义了七种数据类型 1)布尔值(true 和 false) 2)null,一个特殊的关键字表示空,要注意,javascrip是区分大小写的,所以Null和null是不一样的 3)undefined 表示未定义 4)N...
2015-11-12
javascript异常处理
你可以使用抛出异常声明和try…catch 语句。 throw statement try…catch statement 抛出异常 使用throw抛出异常。 当你抛出一个异常,您指定包含值的表达式被抛出: throw "Erro...
2015-11-12
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
本文实例讲述了JS常见创建类的方法。分享给大家供大家参考,具体如下: Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有Class。(不过,ES6引...
2017-04-05
Web缓存基础:术语、HTTP报头和缓存策略
简介 对于您的站点的访问者来说,智能化的内容缓存是提高用户体验最有效的方式之一。缓存,或者对之前的请求的临时存储,是HTTP协议实现中最核心的内容分发策略之一。分发路径中的组件均可以缓存内容来加速后续的请求,这受控于对该内容所声明的缓存策略...
2016-01-13
15个提高编程技巧的JavaScript工具
JavaScript鑴氭湰搴撴槸涓€涓�棰勫厛鐢↗avaScript璇�瑷€鍐欏ソ鐨勫簱锛屽畠鏂逛究浜嗘垜浠�寮€鍙戝熀浜嶫avaScript鐨勫簲鐢ㄧ▼搴忥紝鐗瑰埆閫傚悎AJAX鍜屽叾浠栦竴浜涗互Web涓轰腑蹇冪殑鎶€鏈�銆侸avaScr...
2015-11-12
回到顶部