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)
    })
  }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…