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

使用requestAnimationFrame 实现倒计时功能js(简单秒数倒计时)

拿一个简单的例子吧 就是获取验证码的倒计时 一般来说就是60秒

首先可能想到就是

setInterval
let count = 60
setInterval(() => {
    count --;
}, 1000)


还有一种就是 setTImeout + 函数的递归调用
let count = 60
function coundown() {
    count --;
    if(count > 0) {
        setTimeout(() => {
            countdown()
        }, 1000)
    }
}

可能很容易忽视这玩意 觉得可能就是做动画用的

其实也可以用作倒计时的使用

下面举一个简单的例子

let rafId; // 标识动画的id
 const endTime = Date.now() + 20 * 1000 // 加上20秒  // 结束时间
        function step(timestamp) {
            const diff = endTime - Date.now()
            if(diff > 0) {
                console.log(Math.floor(diff / 1000))
                rafId = window.requestAnimationFrame(step)
            }
        }
        window.requestAnimationFrame(step)
      


这东西 就是实现了简易版本的倒计时了 从实现上看 和 上面的两种其实差距不太大哈

但重点就是这玩意 可以暂停 能暂停
这里也可以吐槽下 那个Promise函数 这玩意有一点不好的就是 一旦运行必须给个结果 不能取消 中途不能取消

// 如果中途能取消的话 就很好了

window.cancelAnimationFrame(rafId)

当然实际效果 根据你自己想法来,想用啥 用啥 不用刻意去非得去用哪一个,能把任务搞定就行!
 

http://www.lryc.cn/news/105189.html

相关文章:

  • jenkins通过sshPut传输文件的时候,报错Permission denied的SftpException
  • 【Python】数据分析+数据挖掘——探索Pandas中的数据筛选
  • [数据集][目标检测]天牛数据集目标检测数据集VOC格式3050张
  • python_day16_设计模式
  • uniapp开发小程序-实现中间凸起的 tabbar
  • Vue引入与Vue拦截原理
  • 2023年电赛---运动目标控制与自动追踪系统(E题)OpenMV方案
  • 6G内存运行Llama2-Chinese-7B-chat模型
  • 项目经理必备-项目总体计划模板-制式文件,可直接填写使用-公司可用
  • 正则表达式系列|(以xx开头xx结尾提取、切分、替换)
  • 金融学复习博迪(第1-5章)
  • 【前端知识】React 基础巩固(三十七)——自定义connect高阶组件
  • 前端PDF导出,使用html2Canvas和jsPDF插件
  • Android 设备兼容性使用详解
  • vnc加固
  • Windows下Nginx安装与配置教程
  • Iterator迭代器和Generator生成器
  • Modbus-RTU协议C#实现
  • Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
  • 基于组合双向拍卖的共享储能机制研究(Matlab代码实现)
  • 服务机器人有哪些品类
  • 3.netty和protobuf
  • NLP实践——Llama-2 多轮对话prompt构建
  • 《TCP IP网络编程》第十四章
  • 网络基础-认识每层的设备和每层的特点用途
  • 【Linux操作系统】深入解析Linux定时任务调度机制-cronat指令
  • 动手学深度学习(一)预备知识
  • item_get-KS-获取商品详情
  • [华为OD] 最小传输时延(dijkstra算法)
  • 问道管理:总资产大于总市值好吗?