函数防抖简化调用版

传统防抖函数调用较为复杂,需要传入函数,且总是执行最后一次。

function debounce(func, wait) {
    let timer;
    return function() {
      let context = this; // 注意 this 指向
      let args = arguments; // arguments中存着e
         
      if (timer) clearTimeout(timer);
 
      timer = setTimeout(() => {
        func.apply(this, args)
      }, wait)
    }
}

现在需要给系统各个地方加防抖,只执行第一次,后面的操作作废。如果用传统的防抖方法,调用太麻烦了。简化一下,最好用一行代码就可以实现防抖。
封装的方法:

function deboundce(wait) {
    let timer;
    return function() {
        let status = true;
        if (timer) {
            clearTimeout(timer);
            status = false;
        }
        timer = setTimeout(()=> {
            clearTimeout(timer);
            timer = false;
        }, wait);
        return status;
    }
}

export const debPromise = deboundce(500);

调用方法:

import { debPromise } from '../utils/deboundce.js';
function()    {
    if(!debPromise()) return;
    //后续操作
}

你可能感兴趣的:(javascript)