首页 > 其他 > 详细

发布订阅模式

时间:2020-07-03 17:16:46      阅读:55      评论:0      收藏:0      [点我收藏+]
const corp = {
  list: [],
  on(eventName, fn) {
    if (!this.list[eventName]) {
      this.list[eventName] = []
    }
    this.list[eventName].push(fn);
  },
  emit() {
    const fns = this.list[arguments[0]]
    if (!fns || !fns.length) {
      return null;
    }
    fns.forEach(fn => {
      fn.apply(this, [...arguments].slice(1))
    })
  }
}

// 测试用例
corp.on(‘job‘, function (position) {
  console.log(‘你的职位是:‘ + position);
});
corp.on(‘job‘, function (position) {
  console.log(‘你的薪资是:10000‘);
});
corp.on(‘skill‘, function (skill) {
  console.log(‘你的技能有: ‘ + skill);
});

corp.emit(‘job‘, ‘前端‘);
corp.emit(‘job‘, ‘后端‘);
corp.emit(‘skill‘, ‘javascript‘);

// 打印
你的职位是:前端
你的薪资是:10000
你的职位是:后端
你的薪资是:10000
你的技能有: javascript

发布订阅模式

原文:https://www.cnblogs.com/liea/p/13231393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!