当前位置:网站首页>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
throttle
page
Participation of this paper Tencent cloud media sharing plan , You are welcome to join us , share .
版权声明
本文为[:::::::]所创,转载请带上原文链接,感谢
边栏推荐
- 数字城市响应相关国家政策大力发展数字孪生平台的建设
- How to select the evaluation index of classification model
- 中国提出的AI方法影响越来越大,天大等从大量文献中挖掘AI发展规律
- Python download module to accelerate the implementation of recording
- 5.4 static resource mapping
- 助力金融科技创新发展,ATFX走在行业最前列
- I've been rejected by the product manager. Why don't you know
- Skywalking series blog 1 - install stand-alone skywalking
- Programmer introspection checklist
- 钻石标准--Diamond Standard
猜你喜欢
随机推荐
Windows 10 tensorflow (2) regression analysis of principles, deep learning framework (gradient descent method to solve regression parameters)
Troubleshooting and summary of JVM Metaspace memory overflow
Python download module to accelerate the implementation of recording
Group count - word length
数据产品不就是报表吗?大错特错!这分类里有大学问
In order to save money, I learned PHP in one day!
深度揭祕垃圾回收底層,這次讓你徹底弄懂她
This article will introduce you to jest unit test
How to become a data scientist? - kdnuggets
Linked blocking Queue Analysis of blocking queue
Skywalking series blog 1 - install stand-alone skywalking
Process analysis of Python authentication mechanism based on JWT
Face to face Manual Chapter 16: explanation and implementation of fair lock of code peasant association lock and reentrantlock
From zero learning artificial intelligence, open the road of career planning!
熬夜总结了报表自动化、数据可视化和挖掘的要点,和你想的不一样
Python + appium automatic operation wechat is enough
Just now, I popularized two unique skills of login to Xuemei
前端都应懂的入门基础-github基础
Network security engineer Demo: the original * * is to get your computer administrator rights! 【***】
Synchronous configuration from git to consult with git 2consul