无论触发多少次,按固定频率执行。本质是**“稀释冷却”**。

实现

const throttle = function (action,wait){
    let timeout
    return function(...arg){
        const content  = this
        //有计时器才会去执行,没有不执行
        if(!timeout){
            timeout = setTimeout(() => {
               action.apply(content,arg)
               //执行完毕过后清除计时器
               timeout = null
               
            }, wait);
        }
    }
}
 
const WAIT_TIME = 2000
 
const throttleAction = throttle(()=>{
    console.log(`正在节流执行当中...`)
},WAIT_TIME)
 
const handleClick = function (){
   throttleAction()
   console.log('同步代码正在执行,但节流代码不会执行') 
}