博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数节流和函数防抖
阅读量:5255 次
发布时间:2019-06-14

本文共 1160 字,大约阅读时间需要 3 分钟。

函数节流:触发函数事件后,短时间间隔内无法连续调用,只有上一次函数执行后,过了规定的时间间隔,才能进行下一次的函数调用。

原理:当某个事件一直在触发(onscroll),设置一个间隔时间,判断当前调用时间与上次调用时间差值是否大于间隔时间,若大于,调用目标函数,反之,将当前时间赋值给上次调用时间,接着循环。

应用场景:改善调用onscroll事件时,一直监控页面行为。在滚动过程中,每隔一段时间在去计算这个判断逻辑。而函数节流所做的工作就是每隔一段时间去执行一次原本需要无时不刻地在执行的函数,所以在滚动事件中引入函数的节流是一个非常好的实践。

代码实现:

let startTime = Date.now(); //开始时间let time = 500; //间隔时间let timer;window.onscroll = function throttle(){    let currentTime = Date.now();    if(currentTime - startTime >= time){        let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;        console.log('滚动条位置:' + scrollTop);        startTime = currentTime;    }else{        clearTimeout(timer);        timer = setTimeout(function () {            throttle()        }, 50);    }}

 

函数防抖:js中,多次触发事件后,事件处理函数只执行一次,并且是在触发操作结束时执行。

原理:对处理函数进行延时操作,若设定的延时到来之前,再次触发事件,则清除上一次的延时操作定时器,重新定时。应用场景:注册时,验证用户输入的用户是否已占用,未使用函数防抖技术时,一般做法是在用户每输入一个符号后,进行一次ajax请求,如此一来,不仅对服务器的压力增大了,对用户体验也未必比原来的好。而理想的做法应该是这样的,当用户输入第一个字符后的一段时间内如果还有字符输入的话,那就暂时不去请求判断用户名是否被占用。直到用户停止输入一段时间(自己设定一个时间参数),再去触发ajax请求。

代码实现:

源代码:

    
Document

忽略有点稍微不整齐的排版(#^.^#)

 

转载于:https://www.cnblogs.com/js123/p/10763889.html

你可能感兴趣的文章
定期存款要及时
查看>>
POJ2115 C Looooops
查看>>
单例模式
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
设计模式-(17)策略模式 (swift版)
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
error:Your local changes to the follwing files would be overwritten by merge
查看>>
java.util.Arrays类详解
查看>>
C# Hashtable
查看>>
idea搭建tocmat
查看>>
Android-Application
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
Git远程操作详解
查看>>
[转]在 javascript 按键事件中,按键值的对照表
查看>>
20145206 《信息安全系统设计基础》第2周学习总结
查看>>
JQuery中的DOM操作
查看>>
jQuery Pagination分页插件--刷新
查看>>
D04 Ubuntu16 安装SQLAdvisor
查看>>
自动补全Typeahead
查看>>