最近在小程序开发过程中,当网络条件差或卡顿的情况下,大多数使用者会认为点击无效而进行多次点击,最后出现多次跳转甚至一直循环跳转的情况。
最后经过多次查阅以及微信小程序官方文档的介绍:
页面在跳转的时候需要一定的时间,在完成跳转前,触发该跳转的事件可能多次发生。
经过断点调试,从调试记录上可以看到触发了多次甚至连续不断的事件,从而导致多次或循环跳转。
以上问题可以通过JS中的函数节流和函数防抖找到解决方法。
例如下图所示:在开发过程中tab页在真机上出现类似问题的频率很高
具体解决方法如下:
使用函数节流(throttle):函数在一段时间内多次触发只会执行第一次,在这段时间结束前,不管触发多少次也不会执行函数。
/utils/util.js:
function throttle(fn, gapTime) {
if (gapTime == null || gapTime == undefined) {
gapTime = 1500
}
let _lastTime = null
// 返回新的函数
return function () {
let _nowTime = + new Date()
if (_nowTime - _lastTime > gapTime || !_lastTime) {
fn.a