防抖:是为了防止手抖在一个固定时间内,重复点击提交,所以需要一个触发事件,定时器setTimeout, 一个清除定时器clearTimeout
// 防抖 const btn = document.querySelector('#btn') function pay () { console.log('已剁手') console.log(this) } function debounce (func, delay){ let timer; return function (){ let context = this; clearTimeout(timer); timer = setTimeout(function (){ func.call(context) }, delay) } } btn.addEventListener('click', debounce(pay, 500))
1,逻辑是:首先点击事件,清除定时器,重新设置一个定时器,
2,如果在规定时间内有点击操作,就清除定时器,重新计时。
3,如果在规定时间内没有点击操作,就可以执行表单提交了。