JS防抖与节流的定义分别是什么,如何实现
Admin 2022-06-23 群英技术资讯 731 次浏览
在这篇文章中,我们来学习一下“JS防抖与节流的定义分别是什么,如何实现”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。定义:对于短时间内连续触发的事件,比如滚动事件,防抖就是让某个时间期限内,事件处理函数只执行一次。
关于防抖,拿手指按压弹簧举例,用手指按压弹簧,一直按住,弹簧将不会弹起直到松开手指。
举例resize:
function debounce(fn, wait){
var timer = null;
return ()=>{
if(timer !== null){
clearTimeout(timer);
}
timer = setTimeout(fn, wait);
}
}
function handle(){
console.log(Math.random());
}
window.addEventListener("resize",debounce(handle, 1000));
上面是非立即执行版
立即执行版
function debounce(fn, wait){
let timeid, flag = true;
return () => {
clearTimeout(timeid);
if(flag){
fn();
flag = false;
}else{
timeid = setTimeout(()=>{
flag = true;
}, wait);
}
}
}
拖动浏览器窗口,触发resize,此时并不触发handle函数,定时器计时,在计时时间内再次触发resize的话,则会从新计时,这样做的好处就是拖动浏览器窗口触发resize,并不会频繁执行handle函数,只让其在需要执行的时候去运行,有效的去除了冗余。
常见写法:
const debounce = (func, delay = 200) => {
let timeout = null
return function () {
clearTimeout(timeout)
timeout = setTimeout(() => {
func.apply(this, arguments)
}, delay)
}
}
定义:让事件在一定时间内只执行一次。
本意是像水龙头的水滴一样,规定时间内只执行一次,减少频繁反复执行。
如搜索框input事件。
通过时间戳计算:
function throttle(fn,wait){
let startTime = 0;
return function(){
let endTime = Date.now();
if(endTime-startTime>wait){
fn();
startTime = endTime;
}
}
}
通过定时器:
function throttle(fn,wait){
let timeid = null;
return function(){
if(!timeid){
timeid = setTimeout(function(){
fn();
timeid = null;
},wait)
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
目录vuex-persistedstate将vuex本地存储使用场景Vuex-persistedstateAPIvuex的本地存储vuex是什么vuex中的五大核心当然vuex的本地存储还有一种方式vuex-persistedstate将vuex本地存储使用场景最近在做Vue项目中的登录模块,登陆成功后获取到token
在网页设计中,导航栏的设计也是很重要的一部分,但是网上很多导航栏都是千篇一律的,对此这篇文章就给大家分享一个动画导航栏效果的实现,实现代码及效果如下,感兴趣的朋友可以参考。
目录vue-cli3.0修改打包后的文件地址和文件名问题描述修改文件名报错解决vue文件夹名称修改导致错误vue-cli3.0修改打包后的文件地址和文件名问题描述最近开发一个web端vue项目时使用了vue-cli3.0搭建项目目录,开发过程中一切顺利,没有遇到什么问题,开发完毕打包上线时出现了问题,打包后的文件默认在
这篇文章主要给大家分享的是关于JavaScript执行上下文的内容,一些朋友可能对于JavaScript执行上下文不是很了解,对此这篇文章就给大家来介绍一下JavaScript执行上下文机JavaScript执行上下文栈,感兴趣的朋友就继续往下看吧。
这篇文章主要介绍了Vue3 table表格组件的使用,文章围绕table表格组件是如何使用的相关资料展开详细内容,需要的朋友可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008