vue添加全局轮询方法


vue添加全局轮询方法

main.js 新写一个方法

// main.js 使用this.$route.path 会报错,
// 使用 location代替
Vue.prototype.autoChange = function(keyWords, fn) {
  // 确定是当前的组件 (当前的前端路由路径和传入的key相匹配)
    if(location.pathname.includes(keyWords)) {
       setTimeout(() => {
          fn()
       }, 5000) // 全局统一管理所有页面的轮询间隔(有很多个页面有自动刷新)
    }
}
  
// 组件使用
created() {
  this.init();
}
// 初始化生命周期调用的方法

methods: {
  // 初始请求列表数据的方法
  init() {
     ....
     ...
     this.autoChangeMethods(); // 初始方法中即触发轮询
  },

   /**
   * 为什么多写了一个函数?
   & 
   * 在执行的箭头函数中,将调用接口的方法 (getAppList) 执行完后,
   & 
   * 重新调组件的函数 (autoChangeMethods),
   &
   * 可以确保每次传递的值的准确性、及时性,
   &
   * 而不是传死值,只能使用一次
   */
    
   autoChangeMethods() {
     this.autoChange(// 挂载在vue原型上的函数,组件(实例可以直接使用),这里this执行Vue.prototype
                'union',
                () => {// 第二个参数为一个函数,原型上的函数将它执行了就好
                    this.getAppList(  // table列表方法
             this.uuid,    // 唯一标识
                         this.currentPage, // 当前页
             this.pageSize     // 每页数量
            );
          this.autoChangeMethods(); // 递归轮询
        }
      )
  }
}

// 待优化

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录