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?
On 20 December 2015 13:40:30 -00:00, Forbes Lindesay <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>> 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>> 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>> 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>> wrote: > > > > > > > > > > > > > > > > > > > On Saturday, December 19, 2015, Šime Vidas <<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> > > > > > > > > <https://mail.mozilla.org/listinfo/es-discuss> > > > > > > > > > > > > > > _______________________________________________ > > es-discuss mailing list > > > > <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