How has using async await made you type more? Can you give an example? I suspect you're not using it in the way it was intended to be
On Thu, 7 Dec 2017 at 16:15 Florian Bösch <[email protected]> wrote: > as I predicted once you use it, await/async infests all calls/funcdefs, > and has now become pointless line-noise that you need to remember to write > or you will get into trouble, but serves no discernable semantic, syntactic > or logical function other than making you type more. > > solution: write a transpiler that inserts await/async into all > calls/funcdefs > > On Sun, 3 Dec 2017 at 12:01, Steven Mascaro <[email protected]> wrote: > >> Sorry for making this request now (rather than when async/await was first >> being formulated), but real-world use has led me to think some things could >> benefit from a slightly different syntax. I also apologise if this has been >> raised/discussed before, I wasn't able to find it. The proposal is most >> quickly explained with an example. >> >> Current: >> >> class RemoteService { >> async init() { ... } >> async setProp(id, val) { ...; return this } >> async getProp(id) { return ... } >> async runInBackground() { ... } >> } >> >> async function remoteExample() { >> let remote = new RemoteService(); >> await remote.init(); >> await (await remote.setProp('a', 1)).setProp('b', 2); >> remote.runInBackground(); >> let val = await remote.getProp('a'); >> return val; >> } >> >> Proposed: >> >> class RemoteService { >> await init() { ... } >> await setProp(id, val) { ...; return this } >> await getProp(id) { return ... } >> await runInBackground() { ... } >> } >> >> await function remoteExample() { >> let remote = new RemoteService(); >> remote.init(); >> remote.setProp('a', 1).setProp('b', 2); >> async remote.runInBackground(); >> let val = remote.getProp('a'); >> return val; >> } >> >> Why: >> >> Running things in a genuinely asynchronous way is actually *unusual*. The >> current async/await syntax (which I think should still stay) is the exact >> reverse of what fits the probable use cases. Missing the 'await' keyword >> (particularly on functions/methods that don't return a value) causes all >> sorts of hard to track down bugs. I myself didn't realise this until I (and >> others I work with) started making intense use of async/await. >> >> The new proposed syntax above is obviously much simpler and would be very >> hard to get wrong. By contrast, the original syntax has proven surprisingly >> difficult to get consistently right. Even now with quite a lot of practice, >> I'm occasionally forgetting an await here and there. In addition, patterns >> like chaining get ugly *very* quickly. (Although I guess that could also be >> fixed with a method-friendly async call syntax.) >> >> If the proposed syntax were available in addition to the current syntax, >> you could apply whichever keyword in the function declaration is most >> likely applicable at call sites. e.g. runInBackground could be declared >> 'async' rather than 'await', if you normally expect it to be run in the >> background. >> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

