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

JavaScript实现倒计时函数

函数代码

/**
 * 倒计时
 * @param {function} callback 回调函数,参数为当前剩余时间(time)
 * @param {number} count 倒计时开始时间(s)
 * @param {number} interval 间隔时间(ms)
 */
function countDown(callback, count = 60, interval = 1000) {
  callback(count);
  const startTime = Date.now();
  const timer = setTimeout(() => {
    const endTime = Date.now();
    const diffTime = endTime - startTime;
    const time = count - Math.floor(diffTime / 1000);
    clearTimeout(timer);
    if (time <= 0) callback(0);
    else countDown(callback, time);
  }, interval);
}

// 使用例子
countDown((time) => {
  console.log(time)
  // this.count = time;
});

解释

  • 为什么写一个倒计时函数,因为在写vue项目中,出现多次需要倒计时的情况,比如说登录页手机验证码登录,修改密码发送验证码等,也就是需要倒计时验证码的时候,均需要该函数(每个页面都写了),就想从中抽离出来使用(心里的诟病,一直想抽离)。
  • 刚开始抽离没有思路,后面灵光一闪,使用回调函数实现。
  • 函数中,setTimeout函数里面,为什么不直接time-1或者time-interval,因为这样的减分可能会存在误差(概率不大),而用系统时间,则几乎不会存在误差。

相关文章:

  • Spring Boot 学习笔记
  • 特征选择之递归特征消除(REF)
  • 【零基础到精通Java合集】第十五集:Map集合框架与泛型
  • MySQL夺命连环13问
  • AT89C51手册解读:特性、引脚、操作模式及编程详解
  • 【大模型科普】AIGC技术发展与应用实践(一文读懂AIGC)
  • 深入解析Java线程模型:从BIO到NIO的性能跃迁之路
  • 文件上传靶场(1--9关)
  • Kotlin使用心得:提升开发效率的实战技巧(一)
  • 前端面试场景题葵花宝典之四
  • 如何直接导出某个conda环境中的包, 然后直接用 pip install -r requirements.txt 在新环境中安装
  • conda虚拟环境中如何查看包的位置
  • 2024四川大学计算机考研复试上机真题
  • javascript一些原生方法记录
  • 【Groovy】Array、List、Set、Map简介
  • 【AI大模型】DeepSeek + Kimi 高效制作PPT实战详解
  • Visio 2021 专业版是微软推出的一款专业图表绘制工具 资源分享
  • DE2115实现4位全加器和3-8译码器(FPGA)
  • linux中使用firewall命令操作端口
  • C++ Windows下屏幕截图
  • 政府网站都是谁做的/网站建设哪家好
  • 免费做电子书的网站/武汉做搜索引擎推广的公司
  • 河南省交通基本建设质量检测监督站网站/名词解释搜索引擎优化
  • 跨境电商平台的优劣势/seo资料网
  • 做pc网站/单词优化和整站优化
  • 广东专业做网站排名公司/企业qq