vue定时器问题(单个定时器和循环定时器)

vue定时器问题(单个定时器和循环定时器)有两种情况 一 单个定时器 比如发送验证码后 显示倒计时 60 秒二 在循环中创建多个定时器 比如美团未支付页面有多个订单 都是从下单时间开始倒计时 15 分钟第二个情况有点复杂 弄了很久 算是踩坑了 一 单个定时器 比如发送验证码后 显示倒计时 60 秒 html divclass input item spanclass des 验证码 spanclass des divclass input item

 <div class="input-item"> <span class="des">验证码</span> <input class="input" placeholder="填写验证码" id="validateCode" /> <a href="javascript:void(0)" v-on:click="GetverificationCode">{ 
   { 
   count}}</a> </div> 

js

 data: { 
    count: "获取验证码", timer: null,//关键 }, methods:{ 
    //获取验证码 GetverificationCode: function (e) { 
    let that = this; $.ajax({ 
    url: "/OrderMeal/SendVerificateCode", data: { 
    phone: $("#phone").val() }, success: function (data) { 
    if (data.isSuccess == false) { 
    $.toptip('系统繁忙,请稍后再试', 'warning'); return; } const TIME_COUNT = 60;//设置60秒 if (!that.timer) { 
    that.count = TIME_COUNT; that.show = false; that.timer = setInterval(() => { 
    if (that.count > 0 && that.count <= TIME_COUNT) { 
    that.count--; } else { 
    clearInterval(that.timer); that.timer = null; that.count = "重新获取"; } }, 1000) } } }) }, }, 

二、在循环中创建多个定时器,比如美团未支付页面有多个订单,都是从下单时间开始倒计时15分钟

for (var i = 0; i < that.orderList.length; i++) { 
    let j = i;//重点 (function (j) { 
   //重点,跟循环打印一个道理,否则得到的的是最后一个,而不是每一个值都有 that.orderList[j].timer = null;//重点 var startTime = new Date().getTime(); var endTime = Date.parse(that.orderList[j].orderTime);//下单时间换算成毫秒 endTime += //加30分钟(倒计时三十分钟) var leftTime = endTime - startTime;//下单后的30分钟-现在的时间 if (!that.orderList[j].timer) { 
    that.orderList[j].timer = setInterval(() => { 
    if (leftTime > 0) { 
    leftTime = leftTime - 1000 var m = Math.floor(leftTime / 1000 / 60 % 60); var s = Math.floor(leftTime / 1000 % 60); that.$set(that.orderList[j], "Min", m)//上一篇有讲,给数组对象加新属性 that.$set(that.orderList[j], "Sec", s) //console.log(that.orderList[j].Min, s) } else { 
    clearInterval(that.orderList[j].timer); that.orderList[j].timer = null; } }, 1000) } })(j) } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232430.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月12日 上午9:01
下一篇 2025年10月12日 上午9:22


相关推荐

  • python 图片拼图的制作 确定不来尝试一下……

    python 图片拼图的制作 确定不来尝试一下……

    2021年11月10日
    50
  • Android JSONObject 转 String / String转JSONObject「建议收藏」

    Android JSONObject 转 String / String转JSONObject「建议收藏」首先加入依赖,JSON使用阿里的fastJson为依赖包implementation’com.alibaba:fastjson:1.2.31’注意不要导错包了importcom.alibaba.fastjson.JSONObject;JSONObject转StringJSONObjectjsonObject=newJSONObject();jsonObject.put(“userName”,”用户名”);jsonObject.

    2022年8月23日
    12
  • maven上传就私库

    maven上传就私库上传命令:mvndeploy:deploy-file-DgroupId=com.cmos-DartifactId=itframe-boot-base-Dversion=1.0.1-SNAPSHOT-Dpackaging=jar-Dfile=D:\s\itframe-boot-base-1.0.1-SNAPSHOT.jar-Durl=http://10.97.85.11:38081…

    2022年7月18日
    17
  • Spring Cloud入门操作手册(Hoxton)

    Spring Cloud入门操作手册(Hoxton)文章目录@[toc]springcloud介绍springcloud技术组成SpringCloud对比Dubbo一、service-服务二、commons通用项目新建maven项目pom.xmljava源文件pojoItemUserOrderserviceItemServiceUserServiceOrderServiceutilCookieUtilJsonUtilJso…

    2022年6月9日
    53
  • springboot—@Async实现异步调用及异步回调Future「建议收藏」

    springboot—@Async实现异步调用及异步回调Future「建议收藏」异步调用相对的是同步调用。同步方法调用的时候必须是按照顺序执行的,上一行代码执行完,才会执行下一行。而异步方法调用是相当于多个线程执行,不需要等待上一行代码的执行结果。首先测试方法同步的情况:controller:packagespringboot_async.async_test;importorg.springframework.beans.factory.annot…

    2022年7月27日
    45
  • shell语法基础[通俗易懂]

    shell语法基础[通俗易懂]文章目录1.shell基本语法1.1shell中的变量定义和引用1.2shell中无引号、单引号和双引号的区别1.shell基本语法1.1shell中的变量定义和引用(1)变量定义和初始化。shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言;变量没有明确类型就是弱类型语言),和C语言不同。在shell编程中定义变量不需要制定类型,也没有类型这个概念。(2)变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的。注意:shell对语法非常在意,非常严

    2022年7月12日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号