阻止逻辑事件短时间频繁调用
栗子:
阻止按钮在1s内多次被调用
; 先上我baidu的结果
btn.onclick = function add(){
btn.innerHTML = Number(btn.innerHTML) + 1;
btn.onclick = null;
clearTimeout(timer);
var timer = setTimeout(function(){
btn.onclick = add;
},1000);
}
btn.onclick = (function(){
var last = Date.now();
return function(){
var now = Date.now();
if((now - last)>1000){
btn.innerHTML= Number(btn.innerHTML) + 1;
}
last = now;
}
})();
以上两种方法都可以实现,目前我困惑的问题在于:
1-除了使用定时器或者闭包,有没有更棒的方式;
2-如果没有,那么上述两种哪种方式更适合组件化公用;
当前项目有许多地方需要用到,那么我想尝试自己封装一个简单的公共方法,达到的效果可以支持click
事件阻止1s内被多次调用,又或者可以自定义的扩展(后话);
项目基于angular4.x(没有找到类似推迟执行的方法..),当然原生js完全OK
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
用RxJS的debounceTime啊,你可以用directive包装一下使用