updater-subscriptions.ts 459 B

1234567891011121314151617181920
  1. export function createUpdaterSubscriptions() {
  2. const subscriptions = new Map<number, () => void>()
  3. const remove = (id: number) => {
  4. subscriptions.get(id)?.()
  5. subscriptions.delete(id)
  6. }
  7. return {
  8. set(id: number, unsubscribe: () => void) {
  9. remove(id)
  10. subscriptions.set(id, unsubscribe)
  11. },
  12. delete: remove,
  13. clear() {
  14. subscriptions.forEach((unsubscribe) => unsubscribe())
  15. subscriptions.clear()
  16. },
  17. }
  18. }