我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

本文实例为大家分享了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 :class="lazy" data-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);
      }
    };

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

帝国CMS中确定某个页面使用的是哪个模版的方法

帝国cms中确定某个页面使用的模版的方法: 1www.cppcns.com. 进入后台管理界面,选择&www.cppcns.comldquo;管理栏目&http://www.cppcns.comrdquo;,如下图所示。2. 进入管理栏目后
2022-06-12

JS中定时器的使用及页面切换时定时器无法清除问题的解决办法

定时器相信大家应该都不陌生,下面这篇文章主要给大家介绍了关于JS中定时器的使用及页面切换时定时器无法清除问题的解决办法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-07

linux定时器的使用方法

这篇文章主要讲解了“linux定时器的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux定时器的使用方法”吧!首先来看看linux操作系统为每一个进程提供的3个内部计时器。IT
2023-06-17

android定时器的使用方法

在Android中,可以使用`CountDownTimer`类来创建和使用定时器。以下是使用`CountDownTimer`类的步骤:1. 创建一个`CountDownTimer`的对象,并重写它的两个方法`onTick()`和`onFin
2023-08-28

Android中应用界面主题Theme使用方法和页面定时跳转应用

主题Theme就是用来设置界面UI风格,可以设置整个应用或者某个活动Activity的界面风格。在Android SDK中内置了下面的Theme,可以按标题栏Title Bar和状态栏Status Bar是否可见来分类: 代码如下: an
2022-06-06

Android启动页面定时跳转的三种方法

从我所做的项目来看,几乎都少不了开始页面,启动页面的作用能够打广告、发公告、做缓存处理、更新数据等等!Android实现开始页面的跳转,就是打开一个Android手机APP的欢迎界面后跳转到指定界面,下面就让我简单介绍下比较常用的开始页面的
2022-06-06

C#中多种高效定时器方法的使用详解

本文主要介绍了C#中多种高效定时器方法的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-14

Vue中使用定时器的方式有哪些

本篇内容主要讲解“Vue中使用定时器的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue中使用定时器的方式有哪些”吧!js中定时器有两种,一个是循环执行 setInterval,另一
2023-07-05

Android登陆刷新多个页面的方法是什么

要实现在Android中登录后刷新多个页面,可以使用以下方法之一:1. 使用广播(Broadcast):创建一个登录成功的广播,在登录成功后发送该广播。在各个需要刷新的页面中注册广播接收器,当接收到登录成功广播时,执行刷新操作。2. 使用事
2023-08-19

python爬虫时怎么使用R连续抓取多个页面

这篇文章将为大家详细讲解有关python爬虫时怎么使用R连续抓取多个页面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。当抓取多页的html数据,但容易被困在通用方法部分的功能上,而导致无法实现连续抓取多个
2023-06-20

C#中多种高效定时器方法怎么使用

这篇文章主要讲解了“C#中多种高效定时器方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中多种高效定时器方法怎么使用”吧!在 C# 中,定时器是一种常用的机制,可以周期性地执行
2023-07-05

vue跳转页面常用的方法是什么

本文小编为大家详细介绍“vue跳转页面常用的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue跳转页面常用的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1:router-link跳转1.
2023-07-05

java中多个@Scheduled定时器不执行的解决方法

在应用开发中经常需要一些周期性的操作,比如每5分钟执行某一操作等,这篇文章主要给大家介绍了关于java中多个@Scheduled定时器不执行的解决方法,需要的朋友可以参考下
2023-05-14

vue跳转页面常用的方法有哪些

这篇文章主要介绍“vue跳转页面常用的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue跳转页面常用的方法有哪些”文章能帮助大家解决问题。1:router-link跳转1.不带参数
2023-06-29

VUE单页面应用SEO的方法是什么

这篇文章主要介绍了VUE单页面应用SEO的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇VUE单页面应用SEO的方法是什么文章都会有所收获,下面我们一起来看看吧。vue-meta-info (设置 v
2023-06-27

vue多页面前端项目的命令怎么使用

今天小编给大家分享一下vue多页面前端项目的命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,让我们创建一个基
2023-07-06

编程热搜

目录