2018/2/9 0:00:00
泉源:不详
作者:未知
场景在使用小程序的时间会泛起这样一种情形:当网络条件差或卡顿的情形下,,,,,,使用者会以为点击无效而举行多次点击,,,,,,最后泛起多次跳转页面的情形,,,,,,这种情形要怎么阻止。。。
解决步伐
然后从 轻松明确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都有了:
参考
轻松明确JS函数节约和函数防抖
源代码
tomfriwel/MyWechatAppDemo 的throttle页面
小程序工具提供多类型商城/门店小程序制作,,,,,,可视化编辑 1秒天生5步上线。。。通过拖拽、拼接模?榻峁剐〕绦蛏坛且趁妫,,,,,所看即所得,,,,,,只需要美工就能做出细腻商城。。。
更多微信小程序相关资讯,,,,,,请前往:/miniprogramschool/
【本站声明】
1、本站文章中所选用的图片及文字泉源于网络以及用户投稿,,,,,,由于未联系到知识产权人或未发明有关知识产权的挂号,,,,,,若有知识产权人并不肯意我们使用,,,,,,若是有侵权请连忙联系。。。
2、本网站差池文章中所涉及的内容真实性、准确性、可靠性认真,,,,,,仅系客观性形貌,,,,,,如您需要相识该类商品/服务详细的资讯,,,,,,请您直接与该类商品/服务的提供者联系。。。
KESION pp电子软件
KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,,,,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。KESION 一直通过手艺立异,,,,,,提供产品和服务,,,,,,助力企业向数字化转型,,,,,,通过科技驱动商业刷新,,,,,,让商业变得更智慧!