>From what I can tell, port communication uses Cmd because interop with 
JavaScript isn't necessarily a request-response communication pattern 
(instead, port are pubsub).

But I do have a question: *Is the underlying problem a need to coordinate 
access to a shared resource in JavaScript? *I ask because you mentioned 
localStorage in your initial message. I imagine you'd instead want to leave 
the coordination in Elm to take advantage of Elm's concurrency model 
(immutable data + message-passing) and have a single port to talk to 

On Monday, October 17, 2016 at 3:03:14 AM UTC-4, David Andrews wrote:
> In another discussion, I was pointed to 
> http://faq.elm-community.org/17.html#what-is-the-difference-between-cmd-and-task,
> which sheds some light on the issue, but also raises a few questions.
> Specifically:
>    1. The article mentions that APIs generally expose Task in favor of Cmd. 
>    Why is the port API a -> Cmd msg instead of a -> Task Never () or 
>    something like that?
>    2. Is there a recommended way to pass data to ports in order? I've 
>    come up with the workaround of sending over only one port per update and 
>    using Cmd.Extra.message to trigger additional updates immediately, but 
>    I don't think it's very clean.
> On Monday, October 17, 2016 at 2:39:01 AM UTC-4, Peter Damoc wrote:
>> On Mon, Oct 17, 2016 at 8:02 AM, Janis Voigtländer <
>> janis.voi...@gmail.com> wrote:
>>> Peter, the problem in David’s case is that the actions he wants to order 
>>> execution of are port data sending, and there is no “something lower level, 
>>> like Tasks” for that. The only API available for port data sending is 
>>> Cmd-based.
>> Ooops... my bad. I should have looked more carefully. 
>> -- 
>> There is NO FATE, we are the creators.
>> blog: http://damoc.ro/

You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to