On Aug 5, 2013, at 1:51PM, Tim Caswell <[email protected]> wrote:

> 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.

If you abstract away the turn of the eventloop how does the programmer know 
when they have a lock on local state mutations and when they don't?

> 
> 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.
>  
>  

-- 
-- 
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