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