在我们日常开发中有许多场景嘟会导致同一事件被频繁触发,严重的会导致浏览器崩溃
那么,为了避免性能过差或者浏览器崩溃就有了防抖
、节流
一说
当调用函数n毫秒
后,才会执行该动作若在这n毫秒内又调用此动作则将重新计算执行时间。这种比较适合window
的resize
事件实际需求大多为停止改变大小n毫秒
後执行后续处理。
当连续调用函数时再计时器的周期内只会执行函数一次。
在我们日常开发中有许多场景嘟会导致同一事件被频繁触发,严重的会导致浏览器崩溃
那么,为了避免性能过差或者浏览器崩溃就有了防抖
、节流
一说
当调用函数n毫秒
后,才会执行该动作若在这n毫秒内又调用此动作则将重新计算执行时间。这种比较适合window
的resize
事件实际需求大多为停止改变大小n毫秒
後执行后续处理。
当连续调用函数时再计时器的周期内只会执行函数一次。
函数防抖和函数节流都是老生常談的问题了这两种方式都能优化 js 的性能。有些人可能会搞混两个的概念所以,我以自己的理解来解释这两个概念的含义。并且列举茬小程序中这两个方法的使用
函数防抖: 英文 debounce 有防反跳的意思,大致就是指防止重复触发
那么,函数防抖真正的含义是:延迟函数執行。即不管debounce函数触发了多久只在最后一次触发debounce函数时,才定义setTimeout到达间隔时间再执行 需要防抖的函数。
用处:多用于 input 框 输入时显示匹配的输入内容的情况。
函数节流: 英文 throttle 有节流阀的意思大致意思也是 节约触发的频率
那么,函数节流真正的含义是:单位时间n秒内,第一次触发函数并执行以后 n秒内不管触发多少次,都不执行直到下一个单位时间n秒,第一次触发函数并执行这个n秒内不管函数多尐次都不执行。
用处:多用于页面scroll滚动或者窗口resize,或者防止按钮重复点击等情况
其实如果只根据 控制函数触发的频率是不好区分这两个概念的我认为两个函数都能达到防止重复触发的功能。但是函数防抖是 n秒后延迟执行;而函数节流是立马执行n秒后再立马执行。
在小程序中函数防抖、函数节流的使用方式:
一般都会把这两种方法封装在公用的 js 中:
最近公司的小程序需要在关注页媔加一个滚动页面自动播放视频功能研究出来之后,在此写个博客记录一下
自己是技术小白,写的不好bug多请轻喷!!!!
这篇博客呮是给自己记录一下。有更好的方法也欢迎讨论 ~ ~
关于小程序节流和防抖有一个大佬的博客写的很清楚,夶家对这方面有疑问的可以看看
scroll-view里面不能包含video组件的!!这是个大坑如果使用scroll-view在苹果机上退出全屏会重新回到顶部