> You still seem to be misunderstanding what the execution order difference
is about.

If to stop this thread you need me to say I am confused about anything then
fine, "I am confused", but if you keep changing my examples to make your
point then this conversation goes nowhere, so I am officially out of this
thread.

Best Regards.

On Mon, Oct 14, 2019 at 10:41 PM Tab Atkins Jr. <[email protected]>
wrote:

> On Sat, Oct 12, 2019 at 7:19 AM Andrea Giammarchi
> <[email protected]> wrote:
> > in order to work, `await` must be executed in an async scope/context
> (either top level or within a closure).
> >
> > In such case, either somebody is awaiting the result of that `async`
> execution, or the order doesn't matter.
>
> That's definitely not true. I gave you an explicit example where the
> order differs. That example code is realistic if you're using the
> async call for side-effects only (and thus don't care about the
> returned promise), or if you're storing the returned promise in a
> variable so you can pass it to one of the promise combinators later.
> In either of these cases the order of execution between the sync and
> async code can definitely matter.
>
> > The following two examples produce indeed the very same result:
> >
> > ```js
> > (async () => { return 1; })().then(console.log);
> > console.log(2);
> >
> > (async () => { return await 1; })().then(console.log);
> > console.log(2);
> > ```
>
> In both of these cases, you're doing no additional work after the
> "maybe async" point. That is the exact part that moves in execution
> order between the two cases, so obviously you won't see any
> difference.  Here's a slightly altered version that shows off the
> difference:
>
> ```js
> (async () => { 1; console.log("async"); return 3; })().then(console.log);
> console.log(2);
>
> (async () => { await 1; console.log("async"); return 3;
> })().then(console.log);
> console.log(2);
> ```
>
> In the first you'll log "async", "2", "3". In the second you'll log
> "2", "async", "3".
>
> > As summary: the proposal was to help engines be faster when it's
> possible, but devs are confused by the syntax, and maybeat the end there
> wouldn't be as many benefits compared to the apparent confusion this
> proposal would add.
>
> You still seem to be misunderstanding what the execution order
> difference is about. Nobody's confused about the syntax; it's clear
> enough. It just does bad, confusing things as you've presented it.
>
> As I said in earlier message, there *is* a way to eliminate the
> execution-order difference (making it so the only difference would be
> the number of microtasks when your function awaits *multiple* sync
> values), which I thought you'd come up with at some point, but I'm
> pretty sure it was just me misunderstanding what you'd said.
>
> ~TJ
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to