前言:
此刻你们对“js节流实现”大概比较注重,咱们都想要分析一些“js节流实现”的相关文章。那么小编也在网上汇集了一些有关“js节流实现””的相关内容,希望姐妹们能喜欢,同学们快快来了解一下吧!前言:前几天在做小程序的时候,碰到一个问题就是通过canvas要搬动canvas画布中的某个图片进行移动,这时候就产生了频繁的setData,就会导致性能出现了一点问题,我们一般比较喜欢的是不进行时时的setData毕竟消耗资源,那么这时候就需要用到节流函数了。
节流函数
说明:节流其实就是减少逻辑触发的频率,实际机制就是利用了计时,在短时时间内不进行频繁触发
const _.throttle = (func, wait) => { let timer; return () => { if (timer) { return; } timer = setTimeout(() => { func(); timer = null; }, wait); };};var throttle = function(func,watduration)
使用:
throttle(function(){console.log(123456)},1000)throttle(function(){console.log(123456)},1000)throttle(function(){console.log(123456)},1000)防抖函数
说明:简单理解就是不管函数在执行了多少次,最终只能执行成功一次就是最后一次。
var timeoutFunc = null;/**callbackFunc 回调函数waitDuration 到计时频率,毫秒级;比如:1000 代表1秒*/var antiShakeFunc = function(callbackFunc,waitDuration){ clearTimeout(timeoutFunc); timeoutFunc=setTimeout(function(){ callbackFunc(); },waitDuration);}
使用:
antiShakeFunc(function(){console.log(123456)},2000)antiShakeFunc(function(){console.log(123456)},2000)antiShakeFunc(function(){console.log(123456)},2000)antiShakeFunc(function(){console.log(123456)},2000)antiShakeFunc(function(){console.log(123456)},2000)antiShakeFunc(function(){console.log(123456)},2000)...只输出最后一条防止重复提交方案大家都喜欢 利用外部的标记为来防止
var symbol = 0;var submit = function(){ if(symbol){ return; } symbol = 1; $.post("/xxx/xxx",{},function(res){ console.log(res); })}#方案没有问题建议使用防抖函数来保证只执行一次。当然只是建议,因为有延迟。不过还是有优化方案。使用场景节流函数动画一类的...防抖函数对值的惟一性,不需要时时修改,但是要保证最后一次和之前是连续的
标签: #js节流实现 #html怎么把图片往上移动一点呢