Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. export const makeGetSet = ({ initialValue, skipInitialCall = false }) => {
  2. let value = initialValue
  3. let subscribers = new Set()
  4. const getValue = () => value
  5. const setValue = newValue => {
  6. value = newValue
  7. subscribers.forEach(sub => { sub(newValue) })
  8. }
  9. const subscribe = callback => {
  10. if (subscribers.has(callback) === false) {
  11. subscribers.add(callback)
  12. if (skipInitialCall === false) {
  13. callback(initialValue)
  14. }
  15. }
  16. return () => {
  17. subscribers.delete(callback)
  18. }
  19. }
  20. return [getValue, setValue, subscribe]
  21. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement