温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信小程序多次跳转的情况如何避免

发布时间:2022-03-10 10:59:01 来源:亿速云 阅读:608 作者:iii 栏目:开发技术

本篇内容主要讲解“微信小程序多次跳转的情况如何避免”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序多次跳转的情况如何避免”吧!

场景在使用小程序的时候会出现这样一种情况:当网络条件差或卡顿的情况下,使用者会认为点击无效而进行多次点击,最后出现多次跳转页面的情况,这种情况要怎么避免。

解决办法

然后从 轻松理解JS函数节流和函数防抖 中找到了解决办法,就是函数节流(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()

            _lastTime = _nowTime

        }

    }

}

module.exports = {

  throttle: throttle

}

/pages/throttle/throttle.wxml:

<button bindtap='tap' data-key='abc'>tap</button>

/pages/throttle/throttle.js

const util = require('../../utils/util.js')

Page({

    data: {

        text: 'tomfriwel'

    },

    onLoad: function (options) {

    },

    tap: util.throttle(function (e) {

        console.log(this)

        console.log(e)

        console.log((new Date()).getSeconds())

    }, 1000)

})

这样,疯狂点击按钮也只会1s触发一次。

但是这样的话出现一个问题,就是当你想要获取this.data得到的this是undefined, 或者想要获取微信组件button传递给点击函数的数据e也是undefined,所以throttle函数还需要做一点处理来使其能用在微信小程序的页面js里。

出现这种情况的原因是throttle返回的是一个新函数,已经不是最初的函数了。新函数包裹着原函数,所以组件button传递的参数是在新函数里。所以我们需要把这些参数传递给真正需要执行的函数fn。

最后的throttle函数如下:

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.apply(this, arguments)   //将this和参数传给原函数

            _lastTime = _nowTime

        }

    }

}

再次点击按钮this和e都有了

到此,相信大家对“微信小程序多次跳转的情况如何避免”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI