Live data from Hacker News

I Avoid Async/Await

uniqname.medium.com

241–242 of 242 posts

Re: I Avoid Async/Await

#241
post #240

Earlier quoted context omitted.

hyperscript is focused on the common cases for light front end scripting, so right now there isn't syntax for doing operations in parallel. If I needed that I would kick out to javascript and use Promise.all() to return an expression that hyperscript could then sync on the wheelhouse for hyperscript is stuff like: on load wait 5s transition my opacity to 0 remove me where you don't have to do any async or callback st…

I don't get it then; your fix to promises being complicated is to remove the ability to perform asynchronous actions. That's cool for a small scripting language I guess, but absolutely impractical for anything serious.

hyperscript is designed for small, embedded front end scripting needs: toggling classes, listening for events from its sister project, https://htmx.org, etc. It isn't a general purpose programming language for use, for example, on the server side in a node-like environment.

you can still perform things asynchronously by wrapping any expression or command in an `async` prefix:

https://hyperscript.org/commands/async/

but there isn't a mechanism for resolving all of them

although, now, come to think of it, the following would work:

  set results to {result1: somethingThatReturnsAPromise(), result2: somethingElseThatReturnsAPromise()}
That would work out because under the covers the hyperscript runtime calls a Promise.all() on those field values before it continues. Kind of a hack, but it would work.

Anyway, again, hyperscript is a DSL targeted at small front end scripting needs rather than being a large scale concurrent systems programming language.

Re: I Avoid Async/Await

#242
post #166

Earlier quoted context omitted.

I thought await in loops was a big no no, unless it has changed since I last checked? Doesn’t it remove any opportunity for parallelism, making the loop take much longer than it would with a Promise.all? Or am I missing something?

You're right(ish) - the async functions would not run in parallel. But sometimes that's either fine, or I don't want them to run in parallel.

It’s funny; I never thought of it as a desirable behaviour.

To each their own!

Post reply on HN