龙空技术网

手机连续点击按钮,死机了?试试JS函数去抖动吧

进击的水白 252

前言:

目前姐妹们对“页面js卡住”大概比较讲究,兄弟们都需要剖析一些“页面js卡住”的相关知识。那么小编也在网摘上汇集了一些有关“页面js卡住””的相关文章,希望我们能喜欢,同学们一起来了解一下吧!

连续点击事件

使用手机的过程中,经常会连续快速点击按钮,然后手机反应不过来,出现了我们看似“死机”的现象。

我们会怪罪手机,认为手机性能不行,再要么就是网络不行,可除了这2点,就没有别的方法优化了吗?

其实出现上述现象,是因为多次点击导致触发了两次或者以上的点击事件,前端一旦处理较多的点击事件,想当然性能就没那么好啦。

通常我们解决这个问题,是在事件回调函数开始执行时,设置一个flag,将按钮设为“不可点击”状态,然后等到回调执行结束,再将按钮置为“可点击”状态。

但是前端页面一般都存在着大量的按钮,每个按钮都要设置flag的话很麻烦,而且代码看起来也冗余。

所以我们可以试试函数去抖动。

函数去抖动

函数去抖动的原理很简单:利用定时器,设置时间间隔。

例如让函数执行延迟500毫秒,在500毫秒内如果有函数又被调用则删除上一次调用,这次调用500毫秒后执行,如此往复。

就是当你停止输入500毫秒后才会执行函数,所以如果你在500毫秒间隔内连续触发回调函数,最后只会执行最后一次触发的函数。

节流

与函数去抖动相关联的就是节流。

节流是预先设定一个执行周期,当调用动作的时刻大于等于执行周期的时候,就执行该动作,然后进入下一个新周期,也就是每隔一个周期函数才会执行。

拿onscroll事件来说,如果使用的是抖动的话,只用当滚动停止后才会执行回调函数,在滚动的过程中是不会执行的。

而节流不同,滚动的时候每隔一个时间周期就会执行一次回调,然后进入下一个新周期。

标签: #页面js卡住 #js按钮点击 #手机javascript不可用怎么办 #js刷新地图时抖动 #js按钮点击后改变内容怎么办