防抖节流工具
提供了节流(throttle)和防抖(debounce)功能,帮助控制函数的执行频率。
节流(Throttle)
节流确保在指定时间间隔内最多执行一次函数。
基于时间的节流
// 基本用法 - 1000毫秒内最多执行一次
Utils.throttle(1000, "button_click", () => {
// 执行的代码
Log.info("按钮被点击了");
});
// 带上下文的用法
var context = {"userId": 123, "userName": "张三"};
Utils.throttle(context, 1000, "user_action", (data) => {
// 可以访问context中的变量
Log.info("用户 " + userName + " 执行了操作: " + data);
}, "保存数据");
基于Tick的节流
// 20 tick内最多执行一次(约1秒)
Utils.throttleTick(20, "game_update", () => {
// 游戏更新逻辑
Log.info("游戏状态更新");
});
// 带上下文的Tick节流
var gameContext = {"level": 5, "score": 1000};
Utils.throttleTick(gameContext, 20, "score_update", () => {
Log.info("等级 " + level + " 分数更新: " + score);
});
防抖(Debounce)
防抖确保在连续触发时,只在最后一次触发后延迟执行。
基于时间的防抖
// 基本用法 - 在最后一次调用后500毫秒执行
Utils.debounce(500, "search_input", () => {
// 执行搜索
Log.info("执行搜索");
});
// 带参数的防抖
Utils.debounce(300, "save_draft", (content) => {
// 保存草稿
Log.info("保存草稿: " + content);
}, "用户输入的内容");
// 带上下文的防抖
var searchContext = {"searchType": "user", "filters": ["active"]};
Utils.debounce(searchContext, 500, "advanced_search", (query) => {
Log.info("执行" + searchType + "搜索: " + query);
}, "搜索关键词");
基于Tick的防抖
// 10 tick后执行(约0.5秒)
Utils.debounceTick(10, "auto_save", () => {
Log.info("自动保存");
});
// 带上下文的Tick防抖
var saveContext = {"autoSave": true, "version": 1};
Utils.debounceTick(saveContext, 10, "document_save", () => {
Log.info("文档版本 " + version + " 自动保存");
});