传统防抖函数调用比较复杂,需要传入函数,总是最后一次执行。functiondebounce(func,wait){让定时器;返回函数(){让上下文=这个;//注意这指向letargs=arguments;//e存储在参数中if(timer)clearTimeout(timer);timer=setTimeout(()=>{func.apply(this,args)},wait)}}现在需要给系统的各个部分加上防抖。仅执行第一次,后续操作无效。如果用传统的防抖方式,打电话太麻烦了。为了简化,最好用一行代码实现防抖。封装方法:functiondeboundce(wait){lettimer;返回函数(){让状态=真;如果(计时器){clearTimeout(计时器);状态=假;}timer=setTimeout(()=>{clearTimeout(timer);timer=false;},wait);返回状态;}}exportconstdebPromise=deboundce(500);调用方式:import{debPromise}from'../utils/deboundce.js';函数(){如果(!debPromise())返回;//后续操作}
