All files / src/utils/onDestroy onDestroy.ts

100% Statements 4/4
100% Branches 1/1
100% Functions 1/1
100% Lines 4/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 317x                                                 7x 2x 2x      
import { scope } from '../../constants'
 
/**
 * You can subscribe on destroy or update of watcher
 * ```javascript
 * const count = new State(0)
 * const watcher = new Watch(() => {
 *   console.log('count', count.value)
 *   // the order does not matter
 *   onDestroy(() => console.log('destructor'))
 * })
 * // console.log('count', 0)
 *
 * count.value++
 * // console.log('destructor')
 * // console.log('count', 1)
 *
 * watcher.destroy()
 * // console.log('destructor')
 *
 * watcher.destroy()
 * count.value++
 * // nothing happens
 * ```
 * */
export function onDestroy (destructor: Function) {
  if (scope.activeWatcher) {
    scope.activeWatcher.destructors.add(destructor)
  }
}