On Thu, Jun 20, 2013 at 7:50 AM, David Bruant <[email protected]> wrote:
> Le 20/06/2013 14:55, Forbes Lindesay a écrit : > > I’ve been answering quite a few questions about promises on stack > overflow lately. > > Do you have a link to a list to these questions (and/or your answers) > off-top your browser history by any chance? > > > One of the key things people seem to struggle to get their head around > is the idea of `.then` as being something that transforms the promise and > returns a new promise. They either expect it to mutate the existing > promise or they expect it to behave like `.done()` does. > > I wasn't there when that started, but it feels like "then" organically > grew out of the experience of using promises a lot which naturally leads to > promise pipelining. > I'm worried that you may be suffering from and spreading a terminology confusion. "Promise pipelining" is an important latency reduction optimization when using promises over a network. See Chapter 16 of < http://erights.org/talks/thesis/markm-thesis.pdf>. Using .then, either with or without the return result, **prevents** promise pipelining, which is another reason to emphasize asynchronous message sending and deemphasize .then. >From context, I suspect you're talking about "promise chaining". > It doesn't feel like the most "fundamental brick" to understand what > promises are (what .done looks like though), because it isn't. > At a first approximation, people can use .then the way the expect (without > caring for the return value) > > > **** > > ** ** > > I think `.done()` could be extremely useful purely as a teaching device. > If we started everyone off by learning to use `.done()` they would have a > much shallower learning curve. Initially they’d get all their errors > thrown immediately which would be easier to see. > > That's how Q behaves out of necessity, but native promises can have better > integration with debugging tools and don't need to reflect the error at > runtime. > > > It would be much more similar to typical (but terrible) DOM APIs and > jQuery APIs that are event based or have a callback and an errback. Having > learnt to use `.done()` we could teach `.then()` as a more advanced feature > that let you compose asynchronous operations by returning a promise that > has been transformed by the callbacks. > > .then can be taught without telling it returns something ;-) > > David > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > > -- Text by me above is hereby placed in the public domain Cheers, --MarkM
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

