当前位置: 首页 > ds >正文

日常代码逻辑实现

日常代码逻辑实现:

1.防抖

解释:

  • 防抖是指n秒内只执行一次,如果n秒内事件再次触发,则重新计算时间

应用场景:

  1. 搜索框输入联想(避免每次按键都发送请求)
  2. 窗口尺寸调整

代码实现:

// 第一种实现方式:定时器
const debounce = (func, delay) => {let timer = null;return function () {const _this = this;const args = arguments;//如果存在则先清楚定时器if (timer) {clearTimeout(timer);}timer = setTimeout(() => {func.apply(_this, args);//重置状态timer = null;}, delay);};
};

2.节流

解释:

  • 节流是指n秒内只执行一次,只有等上一次触发事件执行完毕才会执行下一次

应用场景:

  1. 鼠标滚动事件
  2. 表单提交

代码实现:

// 第一种实现方式:定时器
const throttle1 = (func, delay) => {let temp = false;return function () {const _this = this;const args = arguments;if (temp) return;temp = true;setTimeout(() => {func.apply(_this, args);temp = false;}, delay);};
};// 第二种实现方式:时间戳
const throttle2 = (func, wait) => {let lastTime = 0;return function () {const _this = this;const args = arguments;const now = Data.now();if (now - lastTime >= wait) {func(_this, args);lastTime = now;}};
};

3.红绿黄灯交替亮

解释:

  • 红灯亮3秒,接着绿灯亮2秒,然后黄灯亮1秒后再亮红灯,以此重复

代码实现如下:
使用promise和async/await来实现

// 红绿灯交替重复亮
const redGreenLight = (current, delay, next) => {return new Promise(resolve => {setTimeout(() => {console.log(`当前是${current}灯,${delay}秒后变成${next}`);}, delay * 1000);});
};const test = async () => {while (true) {await redGreenLight("红", 3, "绿");await redGreenLight("绿", 2, "黄");await redGreenLight("黄", 1, "红");}
};
http://www.xdnf.cn/news/5130.html

相关文章:

  • Android应用隐私合规:解决极光推送SDK提前收集WiFi信息问题
  • 解决SVN更新时,提示“不知道这样的主机“问题
  • RDD的自定义分区器-案例
  • python可视化:北方城市客流变化分析2
  • 广西某建筑用花岗岩矿自动化监测
  • 鸿蒙开发:dialog库做了一些优化
  • daytona开源代码架构分析
  • CMD常见命令
  • Oracle非归档模式遇到文件损坏怎么办?
  • 力扣:轮转数组
  • WD5030L CC/CV模式DCDC15A高效同步转换器消费电子工业控制汽车电子优选择
  • 命名视图~
  • NOIP1999提高组.拦截导弹
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据排序操作
  • React 第三十八节 Router 中useRoutes 的使用详解及注意事项
  • OpenHarmony SystemUI开发——修改状态栏和导航栏的高度
  • Mamba 状态空间模型 笔记 llm框架 一维卷积
  • Android设备序列号获取方式全解析
  • 使用pyTorch 自然语言处理(NLP)知识库创建
  • 青少年编程与数学 02-019 Rust 编程基础 03课题、变量与可变性
  • Java中医门诊系统源码 中医诊所系统源码
  • Jenkins Maven 带权限 搭建方案2025
  • 什么是移动设备管理(MDM)
  • el-menu 折叠后小箭头不会消失
  • AKS 支持 Kata Container容器沙盒 -预览阶段
  • 峰与谷系列题
  • 深入解析多线程与多进程:从理论到Python实践
  • 【LLaMA-Factory】使用LoRa微调训练DeepSeek-R1-Distill-Qwen-7B
  • 深入解析WPF中的3D图形编程:材质与光照
  • 关于fastjson与fastjson2中toJava操作的区别