定时器

作者: V_Jan | 来源:发表于2020-05-21 18:42 被阅读0次

定义一个全局的timerList,数据结构为
timerList=[{
id: timerId,
app:appName
}],
思路是,如果展开一行,那就为这个app添加一个log刷新的定时器,去刷新最新的log下来,同事记录这个定时器的timerId, 而如果这行被折叠起来,就去timerList里找到这个app 对应的timerId, 把这个timerId 对应的定时器清除掉。

还有, 在整个component周期的destory阶段要把所有的定时器清除。不然一直执行的程序会占用计算资源。

//Expand方法在每次展开或者合上的时候都会触发,因此要判断当前操作的行是被展开的还是被合上(其实应该是行的click事件)
async handlerRowExpand(row: any, expandedRows: any[]) {
        let expandedApps = map(expandedRows, "name");
        if (includes(expandedApps, row.name)) {
           //展开的行里有当前选中的行,说明这行现在是在展开的状态,不是合上的状态
            await this.getLastBuild(row);
            let timerId = setInterval(() => this.getLastBuild(row), 20000);
            this.timerList.push({app: row.name, id: timerId})
        }else{
            //如果当前行是要被合起来的,所以如果它之前有定时器,要关掉,因为不需要刷新它的log
            let timers = filter(this.timerList, timer => timer.app === row.name);
            if (!isEmpty(timers)) {
                timers.forEach(t => {
                    if (t.id > 0) {
                        clearInterval(t.id);
                    }
                });
                this.timerList = pullAllWith(this.timerList, timers, isEqual)
            }
            return;
         }
    }

destroyed() {
      this.timerList.forEach(t => clearInterval(t.id))
       console.log("app timer cleared!")
  }

关于vue的生命周期我参考了下面这篇文章:当然也可以查官网。

vue每个组件都是独立的,每个组件都有一个属于它的生命周期,从一个组件创建、数据初始化、挂载、更新、销毁,这就是一个组件所谓的生命周期。在组件中具体的方法有:

beforeCreate

created

beforeMount

mounted

(

    beforeUpdate

    updated

)

beforeDestroy

destroyed

作者:CalvinXie
链接:https://www.jianshu.com/p/410b6099be69
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 2017.12.21学习总结

    下午学习了定时器,定时器分为高级定时器、通用定时器和基本定时器,我们主要研究通用定时器。 定时器中断实现步骤:...

  • javascript笔记6

    定时器-间歇性定时器 定时器-延时定时器 认识DOM 间歇性定时器var time = window.setInt...

  • 定时器弹框、定时器基本用法、定时器动画、时钟

    定时器弹框: 定时器基本用法: 定时器动画: 时钟:

  • 无标题文章

    iOS NSTimer使用详解-开启、关闭、移除 定时器定时器详解ios定时器关闭定时器NSTimer 1、要使用...

  • 定时器

    1.倒计定时器(setTimeout) clearTimeout清除定时器2.循环定时器(setInterval)...

  • 第十三节 JavaScript 定时器 单线程

    一、定时器 1. JS存在两种定时器 setTimeout() 延迟定时器 setInterval() ...

  • 定时器 - OC

    定时器的定义 创建一个定时器并启动这个定时器 停止定时器 后续了解:NSTimer invalidate不起作用h...

  • 定时器 类型转换 封闭函数

    定时器定时器在javascript中的作用1、制作动画2、异步操作3、函数缓冲与节流 定时器类型及语法 /*定时器...

  • STM32--------定时器

    STM32F103一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗定时器 1...

  • 定时器

    定时器弹窗 定时器基本用法 定时器动画 时钟 倒计时 变量的作用域

网友评论

      本文标题:定时器

      本文链接:https://www.haomeiwen.com/subject/zwutahtx.html