JS单例模式实现一个定时器

一、需求

       有个页面需要前端轮询接口,这种情况下肯定会考虑到定时器:进入页面时,开启定时器,切换路由时清理定时器,所以可以用dva中的subscriptions(https://dvajs.com/api/#reducers)来处理,但是,我们的需求是:根据接口中的某个字段判断是否要启动定时器,而这个接口和定时器执行的接口是同一个。此时,经过研究,决定使用单例模式创建一个定时器,这样既能保证定时器唯一,也能动态控制定时器(启动和清理)

二、代码与使用

思路一:闭包+子执行函数:

export default (function() {
  let unique: any = null;
  return {
    clearTimer: function() {
      if (unique) {
        clearInterval(unique);
        unique = null;
      }
    },
    getTimer: function(dispatch?: any, type?: string) {
      if (unique === null && dispatch && type) {
        unique = setInterval(() => {
          console.log('--------------定时器执行中----------');
          // 执行逻辑
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值