It doesn't

On Mon, Aug 5, 2013 at 1:32 PM, Mikeal Rogers <[email protected]>wrote:

> I don't see how generators are going to change how actual async
> programming happens in node.js, at least in ES6.
>

It doesn't change how things work internally.  Libraries and node core
should only use callbacks.  That's the lingua franca between all the
competing async programming styles and libraries.


>
> Generators in ES6 are "shallow," they cannot yield until some time in the
> future when IO is done. Generators could be combined with some kind of
> promise interface, along with a new keyword, to yield a promise that spans
> turns of the event system, but this is ES7+ theoretical stuff we're talking
> about now.
>

The biggest way generators affect control-flow libraries and what they can
add on top as sugar is you can easily make a library (like galaxy, suspend,
co, or my own gen-run) that consumes continuables or user-space promises
and suspends the generator, resuming it when the promise/continuable
resolves.

But today, I would only do this in application level code and never in
libraries or node core.

A great example of this separation is how I use generators in js-git.  The
library is entirely callback based.  I make all my external facing API
functions work in dual mode as node-callback-last or return-continuable
style with a single line at the top:

function readFile(path, callback) {
  if (!callback) return readFile.bind(this, path);
  ...
}

And in my examples and documentation, I show how to consume the library
using either traditional callback style of the new generator style using
gen-run.

See https://github.com/creationix/js-git/blob/master/examples/read.js vs
https://github.com/creationix/js-git/blob/master/examples/read-generator.js

Once generators land in a stable release of node.js and not behind a v8
flag *and* in all browser clients my library runs in, then I may change my
policy about never depending on them in libraries.  But I'll gladly use
generators in my documentation since it makes things much easier to read
and has a lot less boilerplate noise.


>
> The biggest thing I see generators effecting in the short term is stuff
> like underscore/lodash because it presents an alternative and, arguably,
> more efficient way to process iterators which is most of what people do
> with those libraries. If successful the impact would not be small as
> underscore is currently the most depended on library in npm, more than
> async, which means this could actually effect more people than some future
> promise thing or alternative to callbacks.
>
> -Mikeal
>
> On Aug 5, 2013, at 11:20AM, Andrew Gaspar <[email protected]>
> wrote:
>
> This is a discussion that has been had time and time again, and it seems
> the general consensus is this - callbacks are about as low level as they
> can go to achieve asynchrony and if you want to wrap that in a different
> construct that you find more useful, then that is something you can either
> use a third party module for or do yourself.
>
> I also greatly prefer promises over callbacks because they are so much
> easier to reason about and compose, but I understand that is not
> everybody's favorite abstraction, and can be unnecessary in some
> circumstances, so I think the right decision was made in not including it
> in the standard API.
>
> Andrew Gaspar
>
>
> On Mon, Aug 5, 2013 at 8:23 AM, Christopher Probst <
> [email protected]> wrote:
>
>> Hi guys,
>>
>> today I read something about the upcomming es6 generator support and how
>> useful they are in combination with promises (Q library for instance).
>>
>> The problem with node is that it provides only asynchronous functions
>> (and synchronous.. pff).
>> I think in order to use promised based io the node.js should support an
>> additional function for each asynchronous function in the future or maybe a
>> library which does this.
>>
>> I know that the Q library already exports functions like "Q.denodeify" so
>> it's definitely not much work but it's still work.
>>
>> I've started with node a year ago and it is really a nice tool but I
>> always hated the callbacks. They are not composable, verbose and absolutely
>> ugly.
>>
>> What do you think about this issue ? Any chance direct support for this
>> will ever be added ?
>>
>> Regards,
>> Chris
>>
>> --
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines:
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "nodejs" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
> --
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
>  --
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to