1.使用场景:是在写keyup事件的时候,每次触发,都会请求后台接口,为了避免,每次请求,键盘弹起之后,隔上一段时间再去请求,所以用防抖函数

2.概念:

(1)什么是防抖:多次事件触发后、事件处理函数只执行一次,并且是在触发操作结束时执行。

(2)原理:延时操作处理函数、若设定的延时到来之前、再次触发函数、则清除上一次的延时操作定时器、重新定时

3.使用:

原先代码这样写的:

$("#key").on("keyup",keyupfn());

function keyupfn(){

var timer=null;

return function (){

clearTimeout(timer);

timer=setTimeout(function(){

var Val=$("#key").val();

$.ajax({

type: "post",

url: "",

data: {name:Val},

dataType: "json",

success: function(res) {

// 请求成功

}

});

},800);

}

}

使用封装后的:

注:第一个this,只是在刚开始,keyup事件,监听的时候,被调用了,之后,每次触发keyup事件,都是调用的debounce函数return出来的函数

关于this的指向:①谁调用函数,this就指向谁;②debounce这个外层函数与里面return出来的函数的调用者,是没有关系的;③debounce是window调用的,返回的函数是触发keyup调用的,是keyup事件触发了返回的函数,而不是debounce方法

function debounce(method,delay) {

let timer = null;

console.log("window", this) //1、 debounce是window调用的

return function () {

console.log("keyup事件调用的11111", this) // 2、this指向$("#key)

let self = this,

args = arguments;

timer && clearTimeout(timer);

timer = setTimeout(function () {

method.apply(self,args);

},delay);

}

}

$("#key").on("keyup",debounce(function () {

var Val=$("#key").val();

console.log("keyup事件调用的222222", this) // 3、 this指向$("#key)

$.ajax({

type: "post",

url: "",

data: {name:Val},

dataType: "json",

success: function(res) {

}

});

},1000)

);

java接口防抖_防抖函数丶Java教程网-IT开发者们的技术天堂相关推荐

  1. java 箭头函数_箭头函数丶Java教程网-IT开发者们的技术天堂

    基本用法 在ES6中允许使用 => 来定义函数,如下: var f = a => a; console.log(f(1)); //1 就等同于 var f = function(a){ r ...

  2. java 淡化图片阴影_图像去阴影丶Java教程网-IT开发者们的技术天堂

    武汉大学提出ARGAN:注意力循环生成对抗模型用于检测.去除图像阴影 | ICCV 2019 https://blog.csdn.net/weixin_42137700/article/details ...

  3. java线性渐变_线性渐变丶Java教程网-IT开发者们的技术天堂

    渐变是由两种或多种颜色之间的渐进过渡组成,它是一种特殊的图像类型,分为线性渐变和径向渐变,这两类渐变还会细分为单次和重复两种.渐变图像与传统图像相比,它的优势包括占用更少的字节,避免额外的服务器请求, ...

  4. java 淘口令_淘口令解析丶Java教程网-IT开发者们的技术天堂

    淘口令解析 通过程序解析淘口令,无需联盟开发者权限,只需几行代码就可实现自动识别淘口令: def query_password(sign_server, share_password): data = ...

  5. java闪屏_闪屏页设置丶Java教程网-IT开发者们的技术天堂

    相信每个app都需要一个闪屏页 就是一个开始页面  对于新手来说 可能就直接一个activity 弄个背景图片 ,细心地同学也许会发现 每次启动 应用程序的时候 一开始显示的不是那个设置的背景图片  ...

  6. java发言_一次发言稿丶Java教程网-IT开发者们的技术天堂

    亲爱的小朋友们,尊敬的各位领导.老师.家长朋友: 大家上午好! 我是刘文文的妈妈,非常荣幸能作为家长代表在这里表达我此时此刻的心情和感慨.首先,请允许我代表全体家长向所有的教职员工说一声:" ...

  7. 不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂

    [问题]给你六种面额 1.5.10.20.50.100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数. 输入描述: 输入包括一个整数n(1 ...

  8. ejs java_ejs教程丶Java教程网-IT开发者们的技术天堂

    ejs教程 一.什么是EJS EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串. 二.为什么要使用EJS 与最初的JavaScript相比较,一些不太了解你的代码的人可以 ...

  9. java父原型,对象及原型丶Java教程网-IT开发者们的技术天堂

    目录 创建对象 字面量 创建对象 new Object() 创建对象 获取.设置对象属性 obj.key 获取/设置obj的key属性的值value obj['key'] 获取/设置obj的key属性 ...

最新文章

  1. Play 2.0 用户指南 - 模版引擎 -- 针对Scala开发者
  2. CCN:拥有雄厚实力的BCH将成为下一轮牛市的催化剂
  3. MATLAB实战系列(三十八)-基于K-means聚类算法的MATLAB图像分割
  4. red hat enterprise 6.3 change to chinese
  5. centos下安装PHP的IDE,如何在 CentOS 8 上安装和使用 PHP 编辑器
  6. margin 塌陷bug 触发bfc
  7. How to debug WCF in local
  8. LCD 驱动的整体分析。
  9. SpingMVC 注解@RequestMapping、@SuppressWarnings、@Scheduled 定时器
  10. 显示upnp服务器 sonos,蒲公英的上层设备如何开启UPnP及其优点
  11. python ocr 识别发票_在Python中使用Tesseract进行OCR识别
  12. [转] ReactNative Animated动画详解
  13. 清华大学计算机系人才流失,大量中国人才流失,科研被国外扼住喉咙,清华等8所高校忍不住了...
  14. 如何学习三点透视?该注意什么?
  15. C++对齐输出(左对齐和右对齐)
  16. 鸿蒙系统报名选择一个应用,申请鸿蒙系统有一个应用选择怎么选择呢
  17. 今日头条——青龙羊毛
  18. 2.2 单片机最小系统
  19. 联想笔记本——进入PE系统
  20. Redis事务与Pipeline功能

热门文章

  1. halcon——缺陷检测常用方法总结
  2. Ubuntu20.04 配置安装运行 Dave (水下SLAM 仿真环境)
  3. GMT 控制坐标轴标注和网格
  4. 程序是什么,逻辑是什么
  5. 控制计算机硬件和修改桌面布局的应用程序,Windows 7中设置、控制计算机硬件配置和修改桌面布局的应用程序是 ( )。...
  6. 通过百度API检测人脸特征,获取颜值、年龄、性别--C语言实现
  7. Oracle 11g 关于权限DBA和SYSDBA的区别是什么
  8. html让网页在手机端自动横屏,如何实现移动端页面默认横屏显示
  9. ArcMap10.2添加Excel中含经纬度(X、Y)的数据,并生成.shp点数据
  10. [物评] 色彩雫 · 冬将军