What is going to fulfill a promise? How will you know when a promise is fulfilled. In a single threaded VM like JS you're stuck with callbacks. Nothing short of full program transformation will give you any better experience than core.async.
A good way to look at it is this...if you do this in ClojureScript what javascript is this supposed to execute? (deref (promise)) The only way this can work is with a code transform like go. Perhaps someday a new version of JS will arise that presents a different solution, but until then core.async is the best you're going to get. Timothy On Tue, Apr 8, 2014 at 3:11 PM, t x <txrev...@gmail.com> wrote: > I'm guilty of the X-Y problem. > > > I'm trying to, inside of CLJS, write a simple WebOS. > > > So I want to simultaneously be able to run things like: > * a notepad app > * an IRC app > * a webRTC video chat app > > > I have built each of these individual pieces in CLJS, -- but combining > them / having them work well together in a clean, non-spaghetti way is > harder than I thought. > > > > ### The main problems here I have are: > > * multi-threading (run all three apps at once) and > * have is inter-"process" (in this case app) communication > > > I'd also prefer to do this in a way where I write each app as if it's > the only app running (i.e. no callback hell.) > > > One possible approach is to make each app a "go-thread", but then I > run into the issue of: > > (go ... (>! ... ) (<! ... )) all forced into the same lexical function. > > > > I'm looking for alternatives to this. By using: > > settimeout(func, 0); I should be able to fire off 3 threads > > now, if I had something like promises, I can do inter-process > communication > > > > I'm still working this through -- so if my thinking is sloppy / > unclear, please point it out so I can make it clearer. > > > Thanks! > > On Tue, Apr 8, 2014 at 2:05 PM, James Reeves <ja...@booleanknot.com> > wrote: > > What exactly are you trying to do? Could you describe the problem you're > > trying to solve in more detail? > > > > - James > > > > > > On 8 April 2014 22:02, t x <txrev...@gmail.com> wrote: > >> > >> I'd really like to avoid callbacks. :-) > >> > >> If cljs had promises, it would suffice. :-) > >> > >> On Tue, Apr 8, 2014 at 2:00 PM, Gary Trakhman <gary.trakh...@gmail.com> > >> wrote: > >> > I think you might be able to use put! with a callback, or (go (>! ..)) > >> > within foo for a transient go process. Not sure if there's any ill > >> > effects. > >> > > >> > > >> > On Tue, Apr 8, 2014 at 4:51 PM, t x <txrev...@gmail.com> wrote: > >> >> > >> >> Hi, > >> >> > >> >> > >> >> * I am aware of core.async. However, I don't like the fact that (go > >> >> ... ) is a macro, thus forcing the >! and <! to appear "in the body", > >> >> and I can't do nested things like: > >> >> > >> >> (defn foo [chan] > >> >> (let [x (<! chan)] ... )) > >> >> > >> >> (go ... (foo ... )) > >> >> > >> >> > >> >> * For the following, I only need it to work in ClojureScript. I > >> >> don't need it to work in Clojure. Furthermore, we can assume browser > = > >> >> latest Firefox, or browser = latest Chrome. > >> >> > >> >> > >> >> Now, my question: is there a library which provides "true" > >> >> lightweight Clojurescript threads? > >> >> > >> >> > >> >> Thanks! > >> >> > >> >> -- > >> >> You received this message because you are subscribed to the Google > >> >> Groups "Clojure" group. > >> >> To post to this group, send email to clojure@googlegroups.com > >> >> Note that posts from new members are moderated - please be patient > with > >> >> your first post. > >> >> To unsubscribe from this group, send email to > >> >> clojure+unsubscr...@googlegroups.com > >> >> For more options, visit this group at > >> >> http://groups.google.com/group/clojure?hl=en > >> >> --- > >> >> You received this message because you are subscribed to the Google > >> >> Groups > >> >> "Clojure" group. > >> >> To unsubscribe from this group and stop receiving emails from it, > send > >> >> an > >> >> email to clojure+unsubscr...@googlegroups.com. > >> >> For more options, visit https://groups.google.com/d/optout. > >> > > >> > > >> > -- > >> > You received this message because you are subscribed to the Google > >> > Groups "Clojure" group. > >> > To post to this group, send email to clojure@googlegroups.com > >> > Note that posts from new members are moderated - please be patient > with > >> > your > >> > first post. > >> > To unsubscribe from this group, send email to > >> > clojure+unsubscr...@googlegroups.com > >> > For more options, visit this group at > >> > http://groups.google.com/group/clojure?hl=en > >> > --- > >> > You received this message because you are subscribed to the Google > >> > Groups > >> > "Clojure" group. > >> > To unsubscribe from this group and stop receiving emails from it, send > >> > an > >> > email to clojure+unsubscr...@googlegroups.com. > >> > For more options, visit https://groups.google.com/d/optout. > >> > >> -- > >> You received this message because you are subscribed to the Google > >> Groups "Clojure" group. > >> To post to this group, send email to clojure@googlegroups.com > >> Note that posts from new members are moderated - please be patient with > >> your first post. > >> To unsubscribe from this group, send email to > >> clojure+unsubscr...@googlegroups.com > >> For more options, visit this group at > >> http://groups.google.com/group/clojure?hl=en > >> --- > >> You received this message because you are subscribed to the Google > Groups > >> "Clojure" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an > >> email to clojure+unsubscr...@googlegroups.com. > >> For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > You received this message because you are subscribed to the Google > > Groups "Clojure" group. > > To post to this group, send email to clojure@googlegroups.com > > Note that posts from new members are moderated - please be patient with > your > > first post. > > To unsubscribe from this group, send email to > > clojure+unsubscr...@googlegroups.com > > For more options, visit this group at > > http://groups.google.com/group/clojure?hl=en > > --- > > You received this message because you are subscribed to the Google Groups > > "Clojure" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to clojure+unsubscr...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- "One of the main causes of the fall of the Roman Empire was that-lacking zero-they had no way to indicate successful termination of their C programs." (Robert Firth) -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.