定时器的暂停,继续,刷新

页面挂载的时候定时器搞起

 <el-row>
                    <div class="ui-toolbar" style="height: 32px; line-height: 32px;">
                        <div style="margin-left:10px;" :class="isExecuteTiming ? ‘green‘: ‘red‘">AUTO Refresh</div>
                        <div style="margin-left:10px; margin-right:10px;">
                            <el-input v-model="autoRefreshInterval" style="width:50px;padding:0;text-align:center" @change="RefreshIntervalChange($event)"></el-input>
                        </div>
                        <div style="color: gray;">秒</div>

                        <div style="margin-left:20px;cursor: pointer" @click="stopAutoRefreshTimer()" v-if="autoRefreshTimer !== null">
                            <img style="margin-top:10px;" src="@/assets/img/icon/ico_btn_stop.png" title="停止暂停自动刷新"/>
                        </div>
                        <div style="margin-left:20px;cursor: pointer" @click="startAutoRefreshTimer()" v-else>
                            <img style="margin-top:10px;" src="@/assets/img/icon/ico_btn_start.png" title="启动暂停自动刷新"/>
                        </div>

                        <div style="margin-left:10px;cursor: pointer" @click="refreshData(curTabKey)">
                            <img style="margin-top:10px;" src="@/assets/img/icon/ico_btn_refresh.png" title="手动刷新"/>
                        </div>
                        <div ref="countDownValue" style="margin-left:10px;font-size:15px;color:red;font-weight:bold;">
                            {{countDown}}
                        </div>
                    </div>
                </el-row>
export default class AgentActiveServiceList extends Vue {
    @Prop(Object)
    // 自动刷新的时间间隔(单位s)
    public autoRefreshInterval: number = 10;
    // 定时器倒计时的值
    public countDown!: number;

    // 暂停时候赋值的变量
    public stopValue!: number;

   /**
     * 生命周期:构造函数
     */
    public constructor() {
        super();

        // 变量初始化this.countDown = this.autoRefreshInterval;
    }}
/**
     * 生命周期:对象销毁完前
     */
    public mounted () {this.stopAutoRefreshTimer();
    }

    /**
     * 启动定时刷新定时器
     */
    public startAutoRefreshTimer() {
       //如果暂停过,就重新开启定时器,并把暂停时取得值传给定时器当初始值,没暂停过就以页面加载时的定时器初始值
        if (this.stopValue) {
            this.countDownDate(this.stopValue);
        } else {
            this.countDownDate(this.autoRefreshInterval);
        }
    }

    // 倒计时显示
    public countDownDate(inputDate: any) {        // 如果之前开启过,先关闭之前的再开启新的
        if (this.refreshInterval) {
            clearInterval(this.refreshInterval);
        }         // 把每次要开启定时器的值赋值给定时器,让他去自减
        this.countDown = inputDate;     // 把定时器赋值给变量,方便日后关闭
        this.refreshInterval = setInterval(() => {
            this.countDown--;
            if (this.countDown < 1) {          // 如果有暂停过的情况,赋过来的值就是暂停时的值,那么每次自减循环的是暂停是的值,而不是初始值,需要判断                    // 如果赋过来的的值 不等于 初始值,就把初始值赋给传过来的值,还不明白的话试一把就知道了
                inputDate !== this.autoRefreshInterval ? this.countDown = this.autoRefreshInterval : this.countDown = inputDate;

            }
        }, 1000);
    }

停止

/**
     * 停止自动刷新定时器
     */
    public stopAutoRefreshTimer() {
        //清除定时器
        clearInterval(this.refreshInterval);

     //暂停的值存起来
        that.stopValue = that.$refs.countDownValue.innerText;
    }

继续

/**
     * 启动定时刷新定时器
     */
    public startAutoRefreshTimer() {

       //如果暂停过,就重新开启定时器,并把暂停时取得值传给定时器当初始值,没暂停过就以页面加载时的定时器初始值
        if (this.stopValue) {
            this.countDownDate(this.stopValue);
        } else {
            this.countDownDate(this.autoRefreshInterval);
        }
    }

刷新

/**
     * 刷新数据
     */
    public refreshData() {
        //赋初值开启定时器即可this.countDownDate(this.autoRefreshInterval);
    }

原文地址:https://www.cnblogs.com/ll15888/p/11978697.html

时间: 2024-10-11 20:11:14

定时器的暂停,继续,刷新的相关文章

PHP 定时器 边输出边刷新网页

使用定时器的时候当然想网页能够看到输出,不希望网页直接卡住,定时器结束输出一片. 要做到定时器不卡住输出,只需要两个函数就行了,看下面代码 <?php //定时器测试代码 demo //跟踪定时程序 timerPro.php ignore_user_abort(true); set_time_limit(600); $interval = 10; $stop = 1; do { if ($stop == 10) break; $curTime = date('y-m-d H:i:s', time

cocos2dx定时器事件

利用场景.层和精灵等游戏元素,我们可以构建游戏的框架,但是此时的游戏仍然是静止不动的.在一切游戏中,游戏的 状态都会随着时间的流逝而改变,同时我们还需要定时进行一些逻辑判断,例如鱼和子弹的碰撞检测.为了解决以上问题, 我们引入了定时器的概念.定时器是以一定时间间隔连续引发游戏事件的工具.很显然,定时器就是使游戏动态变化所需 的工具.Cocos2d-x 为我们提供了两种方式实现定时机制--使用 update 方法以及使用 schedule 方法,下面简要介绍这两种 方式. update定时器 第一

iOS中的三大定时器

iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD. NSTimer 方式1 // 创建定时器 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(test) userInfo:nil repeats:YES]; // 停止定时器 [timer invalidate]; 方式2 // 创建定时器 NSTime

iOS定时器的使用

iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD. NSTimer 方式1 // 创建定时器 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(test) userInfo:nil repeats:YES]; // 停止定时器 [timer invalidate]; 方式2 // 创建定时器 NSTime

STM32学习笔记(五)——通用定时器计数延时

STM32定时器概述 STM32F40x系列总共最多有14个定时器,定时器分为三类:基本定时器.通用定时器和高级定时器.它们的都是通过计数来达到定时的目的,和51的定时器差不多,基本原理都是一样的,就是功能多了一些,这些计数器都是自动重新装载初值的,使用起来非常方便,而且计数时钟频率可以通过分频系数来设置.本文章将介绍使用定时器中断来控制LED间隔1s闪烁. 计数的时钟来源主要有四个: 内部时钟CK_INT 外部时钟模式1:外部输入脚TIx 外部时钟模式2:外部触发输入ETR,仅适用于 TIM2

C#实时读取数据----局部页面刷新【转】

I)现在刚开始学习C#,对一些基本的控件了解的不够,有个实时监控的系统,需要页面中的数据每5秒钟刷新一次, 要是每5秒钟页面全部的刷新,那页面根本就没法看了,对这个问题在CSDN上也专门开了帖子,问了各位高手了, 帖子:http://topic.csdn.net/u/20100109/23/812355fb-32ce-4e3b-98ec-be80c630e1d5.html II)实现的基本思路: 用微软的AJAX轻易可实现!! 1.拖入ScriptManager; 2.拖入UpdatePanel

MFC定时器

在程序中我们经常要使用定时刷新的功能,典型的应用是在信息管理系统中表单要跟着数据库中的数据变动.MFC提供了定时器来完成这个功能. ========================================================================= 在MFC中和定时器相关的有三个函数: UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)( HWND, UINT,

MFC的定时器OnTimer

本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动操作.例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一次数据,这样就可以在无人操作的情况下准确的进行操作.  MFC定时器 VS2010编程中,

如何让网页局部定时刷新?

如何逻辑整理? 1. 需要用到js的定时刷新函数  setInterval(function,time) 2. 只需要对网页中局部的标签进行刷新 函数中function为自定义函数,time是多久执行自定义函数,单位是毫秒 3. 可以通过定义自定义函数进行局部刷新,需要导入jquery 代码演示,如何? setInterval(function() { $("#history").load(location.href+" #history>*","&