iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue页面使用多个定时器的方法
  • 544
分享到

vue页面使用多个定时器的方法

2024-04-02 19:04:59 544人浏览 泡泡鱼
摘要

本文实例为大家分享了Vue页面使用多个定时器的具体代码,供大家参考,具体内容如下 问题描述 vue页面使用多个定时器 html: <div class="prod-item"&

本文实例为大家分享了Vue页面使用多个定时器的具体代码,供大家参考,具体内容如下

问题描述

vue页面使用多个定时器

html

<div class="prod-item">
      <ul>
        <li
          v-for="(item, index) in state.list"
          :key="index"
          :class="[
            item.isDisabled ? 'active_li_02' : 'active_li_01',
            'flex ml-10 mr-10  mt-25',
          ]"
        >
          <div class="img">
            <img :src="item.imageUrl" alt="" />
          </div>
          <div class="item-right">
            <div
              :class="[
                item.isDisabled ? 'active_title_02' : 'active_title_01',
                'title',
              ]"
            >
              {{ item.name }}
            </div>
            <van-button
              type="default"
              :class="[
                item.isDisabled ? 'active_btn_02' : 'active_btn_01',
                'btn mt-30',
              ]"
              @click.stop="checkLoginUser(item)"
              :disabled="item.isDisabled"
            >
              {{ item.saleTit }}
            </van-button>
          </div>
        </li>
      </ul>
</div>

js

js:请求数据,遍历数组,然后根据数据字段判断,如果服务器的开始时间小于服务器的系统时间那就倒计时,appointmentStatus 这个字段为2的时候 且服务器的开始时间小于服务器的系统时间.
let appointStart = new Date( item.appointStart.replace(/-/g, "/") ).getTime(); 这个是兼容iOS的时间格式

const getProdList = async () => {
      //预售商品列表
      await $api.fns.PreSale.getPreSaleList({
        params: {
          iconType: 2,
        },
      })
        .then((res) => {
          if (res?.data) {
            console.log(res.data);
            // `appointment_status`'预约状态 1已上架、2已下架',
            state.list = res.data;
            res.data.map((item) => {
              item.isDisabled = true;
              item.saleTit = "等待预约";
              item.timer = null;
              if (item.appointStart) {
                let appointStart = new Date(
                  item.appointStart.replace(/-/g, "/")
                ).getTime();
                let systemDate = new Date(
                  item.systemDate.replace(/-/g, "/")
                ).getTime();
                item.times = Math.round(
                  parseInt(appointStart - systemDate) / 1000
                );
              }
            });
            state.list = res.data;
            state.list.map((item, index) => {
              if (item.appointmentStatus === 2) {
                if (item.times) {
                  // 还没有开始预购
                  if (item.times > 0) {
                    startCountdown(item.times, index);
                    // 预购结束
                  } else {
                    item.isDisabled = true;
                    item.saleTit = "预购结束";
                  }
                  // 时间为空的时候,就只有预购结束,和立即预购两种状态
                } else {
                  item.isDisabled = true;
                  item.saleTit = "预购结束";
                }
              } else {
                item.isDisabled = false;
                item.saleTit = "立即预购";
              }
            });
           
          }
        })
        .catch((error) => {
          console.log(error);
        });
    };

因为每一个定时器的时间都不一样,所以每一个定时器结束了要清除定时器 window.clearInterval(state.list[index].timer);

// 倒计时
const startCountdown = (times, index) => {
      console.log("index", index, state.list);
      // 跟开始时间相比如果当前时间小于开始时间,那就还没有开始
      // let times = Math.round(parseInt(appointStart - systemDate) / 1000);
      if (times > 0) {
        state.list[index].timer = setInterval(() => {
          state.list[index].times--;
          console.log("state.times-----111", state.list[index].times);
          if (state.list[index].times === 0) {
            state.list[index].times = 0;
            state.list.map(() => {
              state.list[index].isDisabled = false;
              state.list[index].saleTit = "立即预购";
            });

            window.clearInterval(state.list[index].timer);
          }
        }, 1000);
      }
    };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue页面使用多个定时器的方法

本文链接: https://www.lsjlt.com/news/167516.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue页面使用多个定时器的方法
    本文实例为大家分享了vue页面使用多个定时器的具体代码,供大家参考,具体内容如下 问题描述 vue页面使用多个定时器 html: <div class="prod-item"&...
    99+
    2024-04-02
  • vue离开页面时如何销毁定时器
    目录vue离开页面销毁定时器组件里定时器销毁问题解决方法1解决方案2vue离开页面销毁定时器 beforeDestroy() { if(this.timer) {     clear...
    99+
    2024-04-02
  • vue离开页面时怎么销毁定时器
    这篇文章主要介绍了vue离开页面时怎么销毁定时器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue离开页面时怎么销毁定时器文章都会有所收获,下面我们一起来看看吧。vue离开页面销毁定时器beforeDestr...
    99+
    2023-06-30
  • Vue使用三种方法刷新页面
    我们在写项目的时候,经常会遇到,用户执行完某个动作,改变了某些状态,需要重新刷新页面,以此来重新渲染页面。如:用户登录成功、增加、删除、更新等。 原始方法: loca...
    99+
    2024-04-02
  • JS中定时器的使用及页面切换时定时器无法清除问题的解决办法
    目录一、定时器的区别:1、定时器分类:2、setInterval()的使用场景:3、setTimeout()的使用场景4、定时器遇到的问题(以下是我在做项目中遇到的问题及自己的一点想...
    99+
    2023-02-07
    js清除定时器无效 js无法清除定时器 清除计时器js
  • android定时器的使用方法
    在Android中,可以使用`CountDownTimer`类来创建和使用定时器。以下是使用`CountDownTimer`类的步骤...
    99+
    2023-08-28
    android
  • linux定时器的使用方法
    这篇文章主要讲解了“linux定时器的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux定时器的使用方法”吧!首先来看看linux操作系统为每一个进程提供的3个内部计时器。IT...
    99+
    2023-06-17
  • SpringBoot多个定时器冲突问题的解决方法
    目录战术分析使用场景问题场景重现添加注解配置类战术分析 上次的博客疏忽了定时器的一个大重点… 实际开发项目中一定不止一个定时器,很多场景都需要用到,而多个定时器带来的问...
    99+
    2024-04-02
  • C#中多种高效定时器方法的使用详解
    目录使用 System.Threading.Timer 和 ManualResetEventSlim使用 Stopwatch 和 Sleep 方法使用 Task.Delay 和 as...
    99+
    2023-05-14
    C# 定时器
  • Vue中使用定时器的方式有哪些
    本篇内容主要讲解“Vue中使用定时器的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue中使用定时器的方式有哪些”吧!js中定时器有两种,一个是循环执行 setInterval,另一...
    99+
    2023-07-05
  • vue中怎么使用webpack构建多页面
    vue中怎么使用webpack构建多页面,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、开发环境node v6.11.0二、...
    99+
    2024-04-02
  • python爬虫时怎么使用R连续抓取多个页面
    这篇文章将为大家详细讲解有关python爬虫时怎么使用R连续抓取多个页面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。当抓取多页的html数据,但容易被困在通用方法部分的功能上,而导致无法实现连续抓取多个...
    99+
    2023-06-20
  • java中多个@Scheduled定时器不执行的解决方法
    项目背景:在项目中包含两个定时任务,配置信息如下: 1、@Scheduled(initialDelay = 1,fixedDelay=10000) public voud aa(){...
    99+
    2023-05-14
    java定时器schedule java定时器不触发 java scheduled注解
  • vue使用router-view调用页面方式
    目录使用router-view调用页面1.get方式2.post方式实例总结使用router-view调用页面 在项目中,需要在其中一个页面,调用很多其他页面的表单,所以使用rout...
    99+
    2023-03-10
    vue使用router-view vue router-view router-view调用页面
  • C#中多种高效定时器方法怎么使用
    这篇文章主要讲解了“C#中多种高效定时器方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中多种高效定时器方法怎么使用”吧!在 C# 中,定时器是一种常用的机制,可以周期性地执行...
    99+
    2023-07-05
  • 使用sql同时更新多个字段的方法
    这篇文章将为大家详细讲解有关使用sql同时更新多个字段的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在SQL中是用update语句来进行数据的更新的,而S...
    99+
    2024-04-02
  • Android登陆刷新多个页面的方法是什么
    要实现在Android中登录后刷新多个页面,可以使用以下方法之一:1. 使用广播(Broadcast):创建一个登录成功的广播,在登...
    99+
    2023-08-19
    Android
  • Vue中使用定时器(setInterval、setTimeout)的两种方式
    目录1. 循环执行( setInterval )2. 定时执行 ( setTimeout)js中定时器有两种,一个是循环执行 setInterval,另一个是定时执行 setTime...
    99+
    2023-03-19
    Vue使用定时器 Vue定时器setInterval setTimeout
  • vue使用elementUI分页如何实现切换页面时返回页面顶部
    目录使用elementUI分页实现切换页面时返回页面顶部原理实现element-ui分页el-pagination的坑1.所有的信息都必须的动态的2.数据在data里面3.这是重中之...
    99+
    2022-11-13
    vue使用elementUI分页 elementUI切换页面 elementUI返回页面顶部
  • vue跳转页面常用的方法有哪些
    这篇文章主要介绍“vue跳转页面常用的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue跳转页面常用的方法有哪些”文章能帮助大家解决问题。1:router-link跳转1.不带参数<...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作