关于javascript:函数防抖简化调用版

传统防抖函数调用较为简单,须要传入函数,且总是执行最初一次。

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;
    //后续操作
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理