防抖(debounce)
基于上述场景,首先提出第一种思路:在第一次触发事件时,不立即执行函数,而是给出一个期限值比如200ms,然后:
- 如果在200ms内没有再次触发事件,那么就执行函数
- 如果在200ms内再次触发事件,那么当前的计时取消,重新开始计时
效果:如果短时间内大量触发同一事件,只会执行一次函数。
// 非立即执行版
function debounce(func, wait) {
let timeout;
console.log(timeout);
return function () {
console.log(timeout);
console.log(2);
let context = this;
// console.log(context);
let args = argum