On Sunday, December 20, 2015, <br...@mailed.me.uk> wrote: > You're quite right, which demonstrates the lack of necessity for a > top-level await (FYI, I find the inconsistency irritating but > understandable), so I still maintain this is not a _required_ use for an > IIAFE - there is no reason to create an async function to invoke another > async function; one can simply invoke it, and if the result/completion is > required, use it's ,then() member....but there's no need/advantage to > wrapping such an invocation in an IIAFE, right? > > The use case is valid, there was no mistakes. We use async IIFEs as an "entry point" to async code: you can await there, do intermediate calculations with temporary variables, again awai, etc (Promise.all has a different use case).
Dmitry > > On 20 December 2015 13:40:30 -00:00, Forbes Lindesay < > for...@lindesay.co.uk > <javascript:_e(%7B%7D,'cvml','for...@lindesay.co.uk');>> wrote: > > Promises are eager. That is, they do the work and resolve whether you > await them or not. If you want to handle exceptions, you need to call > .then and provide an error handler, but other than that it's totally ok to > not bother waiting for a promise. > > On 19 Dec 2015, at 22:02, Mat At Bread <br...@mailed.me.uk > <javascript:_e(%7B%7D,'cvml','br...@mailed.me.uk');>> wrote: > > Which is what I said, I hope. Use the .then for top-level invitation. > Dimitry's example wouldn't resolve the Promise > > On 19 December 2015 9:24:04 pm Fabrício Matté <ultco...@gmail.com > <javascript:_e(%7B%7D,'cvml','ultco...@gmail.com');>> wrote: > > @bread I see you are referencing Dmitry's sample, but why do you say it > won't work? AFAIK async functions return promises, so you don't necessarily > need a top-level `await`. I believe this (extremely ugly) sample should > work: > > ```js > function f(cb) { > (async function() { > // await here > })().then(v => cb(null, v), cb); > } > ``` > > /fm > > On Sat, Dec 19, 2015 at 7:11 PM, <br...@mailed.me.uk > <javascript:_e(%7B%7D,'cvml','br...@mailed.me.uk');>> wrote: > > That’s not going to work. The correct form still requires an (illegal) > top-level await: > > await (async function() { > // await here > })(); > > The easiest way to spawn a top-level async function is: > > here.then(function(result){},function(error){}) ; > > On 19 December 2015 20:14:44 -00:00, Dmitry Soshnikov < > dmitry.soshni...@gmail.com > <javascript:_e(%7B%7D,'cvml','dmitry.soshni...@gmail.com');>> wrote: > > > > On Saturday, December 19, 2015, Šime Vidas <sime.vi...@gmail.com > <javascript:_e(%7B%7D,'cvml','sime.vi...@gmail.com');>> wrote: > > With block statements + let/const, IIFEs are no longer needed to emulate > block-scoped variables. That got me thinking, are there other uses of > IIFEs, or are they no longer needed? > I’ve checked my code and found instances of this pattern: > > var foo = (function () { > var a, b, c; // helper variables > // some computation > return /* final value of foo */; > }()); > Btw, there is a "do expression" proposal (stage 0) [1] for this type of > pattern. > Anything else? > > > FWIW, one of the still valid use cases is async IIFE, to spawn an async > code (since there's no yet top-level async/await) > > (async function() { > // await here > })(); > > Dmitry > > > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > <javascript:_e(%7B%7D,'cvml','es-discuss@mozilla.org');> > https://mail.mozilla.org/listinfo/es-discuss > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > <javascript:_e(%7B%7D,'cvml','es-discuss@mozilla.org');> > https://mail.mozilla.org/listinfo/es-discuss > > >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss