News for hackers. Stuff that matters.
Re:I Avoid Async/Await by garyrob on Saturday April 16, 2022 @12:19PM (#31053558)
I'm a newbie with respect to JS and especially promises and async/await, but I need to learn. If you could point me to some resource that does a really good job of explaining all this, I'd appreciate it very much. I expect that I wouldn't be the only one. What's something you'd recommend to a junior developer so that they wouldn't be one of the "many devs", as you put it, who do the wrong thing?
Re:I Avoid Async/Await by magnio on Saturday April 16, 2022 @12:49PM (#31053869)
Not the parent, but I recommend understanding the event loop first: here [0] is a very good talk. Then, read the chapter on promise on javascript.info [1], as it explains the problems Promise set out to solve (callback hell), then as usual the excellent MDN article [2].

[0] https://www.youtube.com/watch?v=8aGhZQkoFbQ

[1] https://javascript.info/async

[2] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guid...

Re:I Avoid Async/Await by garyrob on Sunday April 17, 2022 @12:37PM (#31062092)
Just watched that video. Thanks! Excellent resource. Moving on to your other links.
Re:I Avoid Async/Await by stareatgoats on Saturday April 16, 2022 @01:52PM (#31054410)
The whole async/await paradigm (including promises) is trying to fit square pegs into round holes (trying to make async processes look like they are synchronous). Just look at the comments on this page; even though async/await/promises have been around for years they are still causing difficulties for even the most experienced devs.

It doesn't mean it can't be mastered, it can, but the whole paradigm is so fraught with pitfalls and conceptual difficulties that an codebase that uses it in any extensive way will forever be unstable. The whole thing is supposed to help against callback hell, but that can be better solved by a simple thenable object.

Not a popular opinion I know, but there you go.

Re:I Avoid Async/Await by eurasiantiger on Saturday April 16, 2022 @03:16PM (#31055203)
> trying to make async processes look like they are synchronous

That is NOT what async/await is about — after all, async explicitly marks functions as asynchronous. Not exactly trying to hide that.

Async/await is syntactic sugar. It is there to make working with Promises less verbose.

That is almost all: await pauses current function execution in the main event loop, which is an important detail

Re:I Avoid Async/Await by doliveira on Saturday April 16, 2022 @03:05PM (#31055122)
> simple thenable object

Wouldn't you simply be reinventing promises?

Re:I Avoid Async/Await by stareatgoats on Sunday April 17, 2022 @03:59AM (#31059317)
Actually no. A promise is a thenable oject, true, but a complex one. Simple thenable objects are in the simplest form objects that internally just holds an array of methods defined in each then() block. These methods then execute one after another at runtime. Any slightly experienced dev can probably create a library object or class like this in under 100 loc as a dropin replacement for most promises needs, and get a firm grasp of the internals in addition.

The usage of such an object won't be as terse and seemingly elegant as await syntax, but this is part of the problem: with await/promises so much of the complex logic is hidden from view and instead needs to reside the head of each dev, where it needs to compete with a thousand other things that need attention. It's an expression of the constant but unhealthy tendency towards golfing that pervades our field IMO.

Re:I Avoid Async/Await by doliveira on Sunday April 17, 2022 @11:56AM (#31061742)
Yeah, up until you need some extra functionality and you fall into the Inner-Platform effect (https://en.m.wikipedia.org/wiki/Inner-platform_effect). Promises are a well-established and battle-tested standard, I'd be very weary of someone reimplementing them for no reason.
Re:I Avoid Async/Await by lmc on Saturday April 16, 2022 @12:41PM (#31053791)
This doesn't directly answer your question, but... something to watch out for is experienced developers can also struggle with promises and async code if they've spent most of their career working with sync code. And when we 'get' it, the difficulty of the journey is often understated. This stuff can be hard, so don't sweat it if it seems frustrating. (On the other hand, it may be easier if you don't have years of sync patterns to mentally set aside )
Re:I Avoid Async/Await by garyrob on Sunday April 17, 2022 @12:38PM (#31062103)
Thanks for this feedback.