Hi,
I think I'm running into a race condition while using om and
core.async. I have code like this:
om/IWillMount
(will-mount [this]
(go (let [image (<! (load-image (om/get-state owner :url)))]
(om/set-state! owner :width (:width image))
(om/set-state! owner :height (:height image)))))
The load-image fn returns a channel. Then I do a blocking read on
that channel and at some point later, it returns a map which I
save to the component's local state.
Mounting, unmounting and remounting works fine with one
component. However, when I have more than one instances of this
component and I remount them I get most of the time the following
error.
Uncaught Error: Invariant Violation: forceUpdate(...): Can
only force an update on mounted or mounting components.
This looks like the calls to om/set-state! within the go block
are sometimes called when the component is already unmounted.
Now I'm wondering if I'm doing something wrong and have some
questions.
* Is it bad style to use go blocks in the will-mount/did-mount fn
and set state in them?
* Do other people have similar issues, and how to work around?
* Any other idea what's going on?
Thanks, Roman.
--
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.