发布订阅模式

把需要做的事情放到一个数组中,等会事情发生了让订阅的事情一次执行

const fs = require('fs')

interface events {
  arr: Array<Function>,
  on(fn: Function): void,
  emit(): void
}

let events: events = {
  arr: [],
  on(fn) {
    this.arr.push(fn)
  },
  emit() {
    this.arr.forEach(fn => {
      fn()
    })
  }
}

interface IPerson {
  age: number,
  name: string
}

let person = {} as IPerson
events.on(() => {
  if(Object.keys(person).length === 2) {
    console.log(person)
  }
})

events.on(() => {
  console.log('触发一次')
})

fs.readFile('./xxx.txt', 'utf8', (err, data) => {
  person.age = data
  events.emit()
})
fs.readFile('./xxxsss.txt', 'utf8', (err, data) => {
  person.name = data
  events.emit()
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容