allow multiple subscribers on same node

phoen
Daniel Barlow 2022-02-20 12:24:36 +00:00
parent 117cb8be47
commit 3d64e42142
2 changed files with 9 additions and 1 deletions

View File

@ -57,3 +57,11 @@
(s:observe [:foo :bar] #(set win 4)) (s:observe [:foo :bar] #(set win 4))
(s:update [:foo :bar :baz] 42) (s:update [:foo :bar :baz] 42)
(expect (= win 2))) (expect (= win 2)))
(let [s (observable.new {:foo {:bar {:baz 43}}})]
(var win 0)
;; multiple observers can live on same subtree
(s:observe [:foo :bar] #(set win (+ win 1)))
(s:observe [:foo :bar] #(set win (+ win 1)))
(s:update [:foo :bar :baz] 42)
(expect (= win 2)))

View File

@ -21,7 +21,7 @@
(let [el (get data self path)] (let [el (get data self path)]
(when el (when el
(if el._subscribers (if el._subscribers
(el._subscribers:insert fun) (table.insert el._subscribers fun)
(tset el :_subscribers [fun]))))) (tset el :_subscribers [fun])))))
(fn new [data] (fn new [data]