To clarify, the idea is to declare and kick off all the concurrent tasks
upfront (using local variables and the ‘lazy await’ keyword), and then just
continue writing the rest of the code ‘as if all the promises are
resolved’. The async function automagically pauses whenever needed, so it’s
no longer necessary to insert await operators throughout the code.

I admit, this is wishful thinking. I’m just waiting for someone to tell me
that it’s not feasible or that it would lead to some very bad code patterns
:)

On Fri, Feb 24, 2017 at 3:51 AM, Domenic Denicola <d...@domenic.me> wrote:

> We already have that feature in the language: it’s called await. Just
> rewrite the example like so, instead of using /* pause to await x */
> comments:
>
> async function makePizza(sauceType = 'red') {
>   let dough  = makeDough();
>   let sauce  = await makeSauce(sauceType);
>   let cheese = grateCheese(sauce.determineCheese());
>
>   dough = await dough;
>   dough.add(sauce);
>   dough.add(await cheese);
>
>   return dough;
> }
>
> This way, instead of random punctuation like the "." operator causing your
> program to await... it's the actual await keyword.
>
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to