当前位置:网站首页>Wechat applet: prevent multiple click jump (function throttling)
Wechat applet: prevent multiple click jump (function throttling)
2020-11-06 01:22:00 【:::::::】
scene
When using applets, there is a situation like this : When network conditions are poor or stuck , Users will think that the click is invalid and make multiple clicks , Many times the page jumps , As the figure below ( Two quick clicks ):
terms of settlement
And then from Easy to understand JS Function throttling and function buffeting We found a solution , Namely Function throttling (throttle): A function that fires multiple times over a period of time will only execute the first time , By the end of this period , No matter how many times it is triggered, it will not execute the function .
/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)
})
such , Crazy click on the button will only 1s Trigger once .
But then there's a problem , It's when you want to get this.data Got this yes undefined, Or want to get wechat components button Data passed to the click function e It's also undefined, therefore throttle Function also needs to do some processing to make it can be used in the wechat applet page js in .
The reason for this is throttle It returns a new function , It's not the original function anymore . The new function encapsulates the original function , So the component button The parameters passed are in the new function . So we need to pass these parameters to the functions that really need to be executed fn.
final throttle Function as follows :
function throttle(fn, gapTime) {
if (gapTime == null || gapTime == undefined) {
gapTime = 1500
}
let _lastTime = null
// Return the new function
return function () {
let _nowTime = + new Date()
if (_nowTime - _lastTime > gapTime || !_lastTime) {
fn.apply(this, arguments) // take this And parameters to the original function
_lastTime = _nowTime
}
}
}
Click the button again this and e Have it all. :
Reference resources
Source code
- tomfriwel/MyWechatAppDemo Of
throttlepage
Participation of this paper Tencent cloud media sharing plan , You are welcome to join us , share .
版权声明
本文为[:::::::]所创,转载请带上原文链接,感谢
边栏推荐
- 一篇文章带你了解CSS 渐变知识
- 一篇文章带你了解CSS对齐方式
- ES6 essence:
- 2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
- IPFS/Filecoin合法性:保护个人隐私不被泄露
- I'm afraid that the spread sequence calculation of arbitrage strategy is not as simple as you think
- The practice of the architecture of Internet public opinion system
- hadoop 命令总结
- Can't be asked again! Reentrantlock source code, drawing a look together!
- 钻石标准--Diamond Standard
猜你喜欢

怎么理解Python迭代器与生成器?

How to encapsulate distributed locks more elegantly

Want to do read-write separation, give you some small experience

一篇文章带你了解CSS3图片边框

Flink的DataSource三部曲之二:内置connector

熬夜总结了报表自动化、数据可视化和挖掘的要点,和你想的不一样

一篇文章带你了解CSS对齐方式

100元扫货阿里云是怎样的体验?

数据产品不就是报表吗?大错特错!这分类里有大学问

What is the side effect free method? How to name it? - Mario
随机推荐
How to become a data scientist? - kdnuggets
做外包真的很难,身为外包的我也无奈叹息。
6.1.1 handlermapping mapping processor (1) (in-depth analysis of SSM and project practice)
IPFS/Filecoin合法性:保护个人隐私不被泄露
一篇文章带你了解CSS 分页实例
阿里云Q2营收破纪录背后,云的打开方式正在重塑
Natural language processing - BM25 commonly used in search
合约交易系统开发|智能合约交易平台搭建
High availability cluster deployment of jumpserver: (6) deployment of SSH agent module Koko and implementation of system service management
Filecoin的经济模型与未来价值是如何支撑FIL币价格破千的
大数据应用的重要性体现在方方面面
Summary of common algorithms of linked list
Python crawler actual combat details: crawling home of pictures
I think it is necessary to write a general idempotent component
Just now, I popularized two unique skills of login to Xuemei
ES6学习笔记(五):轻松了解ES6的内置扩展对象
多机器人行情共享解决方案
深度揭祕垃圾回收底層,這次讓你徹底弄懂她
6.4 viewresolver view parser (in-depth analysis of SSM and project practice)
快快使用ModelArts,零基礎小白也能玩轉AI!