zoukankan      html  css  js  c++  java
  • 随便写了一个js防抖工具

    随便写了一个js防抖工具

    工具类SimpleUtils.js

    const buf = {}
    
    /**
     *
     * 没事的时候写了一个防抖的小工具,思路蛮简单的其实...当然,我本来是不想用clearTimeout的,不过因时间有限,就没有去想其他思路了...<br/>
     * 还有一个思路是用数组,每次新增的结果都要断言上一个的结果,性质和目前写的差不多,还占内存...
     *
     * ---
     * @param callback 被防抖执行的业务
     * @param id 用于标记...你要防抖的业务...防止...狂乱...
     * @param timeout
     * @return {Promise<Function>} callback
     */
    export const debounceUtils = (callback, id, timeout = 205) => {
        return new Promise(resolve => {
            if (!!buf[id] && buf[id][0]) clearTimeout(buf[id][0])
            buf[id] = [
                setTimeout(() => {
                    resolve(buf[id][1]);
                }, timeout)
                , callback
            ];
        })
    }
    
    

    使用方法

    import {debounceUtils} from "@/utils/SimpleUtils";
    
    // 如果有返回值就用闭包的方式取出来,正常情况直接await掉就好...或者then出来也行
    (await debounceUtils(() => {
        // todo something here
    }, 'function description(unique require)'))();
    
  • 相关阅读:
    计算两个日期相差的天数
    获取当前星期几
    window下重置mysql用户密码
    window下安装mysql
    oracle用户密码过期如何处理?
    awk
    RunLoop
    通知中心
    KVO
    多线程
  • 原文地址:https://www.cnblogs.com/Arunoido/p/15730823.html
Copyright © 2011-2022 走看看