On Sunday, 13 July 2014 01:46:41 UTC+10, Daniel Kersten  wrote:
> Channels are cheap, but unless they get garbage collected (and I assume not 
> closing them will prevent this), they will still take up some resources.
> 
> 
> Related and important is that you shut down any go blocks that you create in 
> IWillMount, especially if they take from a channel which may still be 
> receiving data (eg: through mux or pub/sub). If you don't shut these down, 
> they will continue to run even after the component has unmounted and if the 
> component is later mounted again, you will have multiple go blocks doing the 
> same thing! Besides using resources, this can actually be dangerous if you 
> are accessing owner inside the go block (eg to set local state) as you may 
> end up accessing an unmounted owner. The simplest solution is having a kill 
> channel that you listen on using async/alt that gets closed in the 
> IWillUnmount and that terminates the go block.

Thanks for the explanation. Would you be able to provide a code example that 
demonstrates how to properly clean up a pub/sub watcher within a component's 
IWillUnmount lifecycle method?

-- 
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.

Reply via email to