INNER CODE UNIT · TypeScript
Emitter
onejs/one · packages/emitter/src/index.ts:3
export class Emitter<const T> {
private disposables = new Set<(cb: any) => void>()
constructor(public value?: T) {}
listen = (disposable: (cb: T) => void) => {
this.disposables.add(disposable)
return () => {
this.disposables.delete(disposable)
}
}
emit = (next: T) => {
this.value = next
this.disposables.forEach((cb) => {
cb(next)
})
}