JS设计模式-发布订阅

发布订阅

比如一个公众号可以被多个用户同时订阅,当公众号有新增内容时候,只要发布就好了,用户就能接收到最新的内容。发布和订阅两者毫无关联,先订阅后发布。

下面用发布订阅模式来实现获取多个异步请求结果:

let fs = require('fs');

let e = {
  obj: {},
  arr: [],
  times: 0,
  setTime(time) { // 设置执行几次
    this.times = time;
  },
  on(fn) {  // 订阅
    this.arr.push(fn)
  },
  emit(key,value) {  // 发布
    this.obj[key] = value;
    if(this.times === Object.keys(this.obj).length) {
      this.arr.forEach(fn => fn(this.obj))
    }
  }
}

e.setTime(2);
e.on(function(data) {
  console.log(data)  // { name: '羊羊羊', age: '27' }
})
e.on(function() {
  console.log('获取了所有数据')
})

fs.readFile('./name.txt', 'utf8', function(err, name) {
  if(!err) {
    e.emit('name', name)
  }
})

fs.readFile('./age.txt', 'utf8', function (err, age) {
  if (!err) {
    e.emit('age', age)
  }
})

是不是这样设计真的很舒服~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容