Thanks Gijs, This really explains a lot.
On Thu, Sep 18, 2014 at 10:48 PM, Gijs S. <[email protected]> wrote: > With line 41 uncommented the following seems to happen: > > 1. Parent component's state changed > 2. om/react "walks" the component tree in parent's render to see what should > update > 3. on line 45 with om/build for the child component finds that the child > component already exists, so there is no new component created nor mounted. > 4. However, "running"/calling om/build on line 45 created a new subscription > to the event-pub through :subscriber/:create-subscriber in {:init-state ...} > 5. There will not be a new component created that would create a go-loop to > consume from this new subscriber channel (there's no call to om/will-mount > for a new component from line 22) > 6. Now event-pub has two subscribers but only one go-loop that consumes from > a channel. The pub on :event-ch will block [1] [2] > 7. Weirdness on the page > > Seems you shouldn't have side-effects in the {:init-state ...} passed to > om/build. Instead pass the event-pub to the child component via :init-state > and create the sub chan together with the go-loop to consume from it. > > -Gijs > > [1] http://clojure.github.io/core.async/#clojure.core.async/pub > "Each item is distributed to all subs in parallel and synchronously, > i.e. each sub must accept before the next item is distributed. Use > buffering/windowing to prevent slow subs from holding up the pub." > [2] Play around with buffering in the chan on line 57 to see this behavior > change for a couple of clicks > > -- > Note that posts from new members are moderated - please be patient with your > first post. > --- > You received this message because you are subscribed to a topic in the Google > Groups "ClojureScript" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojurescript/5rCTfnulNXI/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/clojurescript. -- http://www.michielborkent.nl http://www.eetvoorjeleven.nu -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
