Ehan Van的博客
首页
前端笔记
首页
前端笔记
  • 前端笔记

    • v-on的使用
    • 编写一个Vue递归组件
    • 非vue文件中申明的ref如何使用
    • Vue3如何在hook中执行异步函数并同步返回响应式数据
    • 如何终止forEach循环
    • 递归创建下拉树数据
    • 编写一个Vue Web Components
    • js数组toString的使用
    • vueconfig配置多page遇到的坑
    • js事件循环机制
    • React列表渲染中图片闪烁问题
    • 开发中未配置Referrer遇到的坑
    • 前端实现文件分片上传
    • 防抖函数
    • 编写一个vue插件
    • 发布订阅模式

实现思路

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。

代码实现

export function fandou(callback = function() {}, timeout = 300) {
    let timer = null;
    return function() {
        const arg = arguments;
        const context = this;
        clearTimeout(timer);
        timer = setTimeout(() => {
            callback.apply(context, arg)
        }, timeout);
    }
}
Prev
前端实现文件分片上传
Next
编写一个vue插件