把需要做的事情放到一个数组中,等会事情发生了让订阅的事情一次执行
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()
})