项目有多个模块使用到同一个轮询逻辑,如何优雅的整合在一起并且能够提供轮询开关的api

页面A/B/C共享同一个数据, 都需要做轮询,怎么优雅把多个轮询整合在一起并且提供可控制的api

阅读 1.8k
1 个回答

基于事件的形式做一下。需要npm events模块

app.js,建议将开关方法与监听事件方法暴露到 $vm原型链上去,这样每个vue组件都能监听和开关

const EventEmitter = require('events').EventEmitter;
const ee = new EventEmitter();
let enableTimer = true;
let timer = setInterval(()=>{
    if(!enableTimer) {
        clearInterval(timer);
        timer = null;
        return;
    }
    ee.emit('ok'); // 触发事件
},60000);

// 其他JS

this.$ee.on('ok',()=>{}); // 监听事件
this.$ee.off('ok',()=>{}); // 关闭监听
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题