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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于知识图谱的知识推理

    基于知识图谱的知识推理这基于知识图谱的知识推理基本概念、定义推理方法分为三类:知识图推理的相关应用基于规则的推理基于表示学习的推理基于神经网络和强化学习的推理基本概念、定义人工智能算法必须具有推理能力,推理过程必须依赖于知识工程时代的先验知识和经验,大量知识图(KGs),如YAGO(Suchanek,Kasnki,2008),WordNet(Miller,1995),Freebase(Bollacker,Evans、Paritosh、Sturge和Taylor,2008)已经开发。KGs包含大量的先验知识,同时也能有效地组织

    2022年6月11日
    69
  • vue 键盘事件keyup/keydoen

    vue 键盘事件keyup/keydoen使用:当你按下键盘,键盘的值为13的时候,将会执行show函数方法以上两种keyup和keyup.13方法是一样的,点击回车按键,就会执行alert方法一些便捷方式:@keyup.13回

    2022年8月4日
    9
  • 矩阵特征值和特征向量怎么求_矩阵的特征值例题详解

    矩阵特征值和特征向量怎么求_矩阵的特征值例题详解设A是n阶方阵,如果存在数m和非零n维列向量 x,使得Ax=mx成立,则称m是A的一个特征值(characteristicvalue)或本征值(eigenvalue)。非零

    2022年8月5日
    5
  • pycharm django环境搭建_IDEA如何创建项目

    pycharm django环境搭建_IDEA如何创建项目打开pycharm,点击File——>NewProiect 点击Django 设置Django项目路径及相关配置(因为有很多文件我们用不上所以不选Projectlnterpreter选项,而选择Existinginterpreter,创建一个相对干净的的Django项目工程) 点击创建之后,pycharm会自动帮我们创建一个Django项目 启动Django项目 点击链接进入浏览器 出现这个画面就表示创建成功了…

    2022年8月25日
    15
  • sap concur报销系统_SAP NetWeaver

    sap concur报销系统_SAP NetWeaver启动orion后,注册用户登录后,默认的地址是localhost:8080/edit/edit.html,这是页面提示了accessdenied,google了很久,有蛮多人遇到此问题,有人说需要把地址该问localhost:8080/webide/index.html,但我修改后还是会报此错误,后面看了有人说需要更新JDK的版本,后面下了JDK8,按装完成后,再启动orion,输入地址ocal…

    2022年9月25日
    0
  • javascript之处理Ajax错误

    javascript之处理Ajax错误

    2022年2月4日
    48

发表回复

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

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