IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> js--防抖函数 -> 正文阅读

[JavaScript知识库]js--防抖函数

防抖函数

当持续触发事件,一定时间内没有再触发时间,事件处理函数才会执行一次,如果设定的时间到来之前,又触发了事件,就重新开始延时。
触发事件,一段时间内,没有触发事件执行,肯定是定时器。
在设定的时间内,又一次触发了事件,重新开始延时,代表的就是重新开始定时器。
那么意味着上一次还没结束的定时器要清除掉,重新开始。

let timer
clearInterval(timer)
timer=setTimeout(function(){
},delay)

实际的应用:
使用echarts时,改变浏览器宽度的时候,希望重新渲染echarts的图像,可以使用此函数,提升性能。(虽然echarts里有自带的resize函数);
典型的案例就是输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时,解决搜索的bug。

function debounce(delay){
	let timer
	return function(value){
		clearTimeout(timer)
		//我们想清除的是setTimeout 我们应该存储这个timer的变量
		//timer变量需要一直存放在内存中;
		//既然你不想打印之前已经输入的结果,清楚以前触发的定时器;
		//我们应该存储这个timer的变量;
		//一直要在内存当中,内存的泄露,闭包
		timer=setTimeout(function(){
			console.log(value)
		},delay)
	}
}
//我需要的是,首先,输入框的结果只出现一次,是在我键盘抬起不再输入后的1秒之后
var denounFun=debounce(1000)
input.addEventListener('keyup',function(e){
	debounceFun(e.target.value)
})
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:00:21  更:2021-08-20 15:02:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:06:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码