// 防抖 作用:防止重复触发事件

var count = 1;
var container = document.getElementById('container');
function getUserAction(e) {
    // console.log(this)
    // console.log(e);
    container.innerHTML = count++;
}
// container.onmouseover = getUserAction
/**
 *
 * @param {*} func 回调方法
 * @param {*} wait 等待时长
 * @param {*} immediate immediate 是否立即执行,触发事件的几秒内不能重复触发; false:等待wait时间后再触发函数,只执行一次
 * @returns
 */
function debounce(func, wait, immediate) {
    var timeout;
    console.log(arguments, 'arguments')
    return function() {
        var context = this;
        var args = arguments;
        console.log(args, 'args');
        // 如果有timeout,那么清除timeout
        if(timeout) clearTimeout(timeout);
        if(immediate) {
            // 如果immediate为true的时候,vallNow肯定是ture; 当 callNow 是true的时候也就是 timeout 为null
            var callNow = !timeout
            console.log(timeout)
            timeout =  setTimeout(function() {
                timeout = null;
            }, wait)
            if(callNow) func.apply(context, args)
        }else {
            console.log(timeout, 'timeout')
            timeout = setTimeout(() => {
                func.apply(context, args)
            }, wait)
        }
    }
}
container.onmousemove = debounce(getUserAction, 2000, true);

最新文章

  1. jenkins 登录提示无效
  2. 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
  3. 使用supervisor监控进程
  4. Toast 用于一个页面有多个提示
  5. 关于es6的箭头函数使用与内部this指向
  6. ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统
  7. jenkins配置角色访问
  8. 经典排序算法 — C# 版(上)
  9. Android Studio错误日志-注解报错Annotation processors must be explicitly declared now.
  10. 启动期间的内存管理之build_zonelists初始化备用内存域列表zonelists--Linux内存管理(十三)
  11. 第一个SDL程序
  12. SQLServer学习记录
  13. git安装以及初始化
  14. Cookie提要
  15. java 线程(七)等待与唤醒
  16. js数据类型转换 ----流程控制
  17. odoo导入功能二开
  18. Maven 多项目依赖,需要验证artifact的output root中是否包含其他项目输出
  19. 20145216史婧瑶《网络对抗》Web基础
  20. bind() 函数兼容

热门文章

  1. springcloud04 Ribbbon
  2. 从 PyTorch DDP 到 Accelerate 到 Trainer,轻松掌握分布式训练
  3. RocketMQ - 生产者最佳实践总结
  4. ArcGIS Pro SDK 003 如何调用Toolbox
  5. JZOJ 3234. 阴阳
  6. layui 父子弹窗数据交互(包含子弹窗自己关闭并给父弹窗数据填充)
  7. js中的for循环,循环次数会多出一次。当循环到最后一个的时候,循环还会继续,并且此时i就变成remove?
  8. Cesium渲染模块之VAO
  9. OpenLayers入门练习
  10. Windows必装软件,一个比一个好用