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.

Reply via email to