Hacker News new | ask | show | jobs
by ppcsf 3661 days ago
Yeah, it's certainly preferable to use Task.WhenAll or Promise.all in simple cases.

For more complex cases, I like to make the analogy with asynchronous code. There's a few problems with complex async code that only uses a minimal abstraction, like callbacks:

* Writing asynchronous code is error-prone

* Asynchronous code obscures our intent

* Programmers are bad at reasoning about asynchronous code

So we developed abstractions like async/await and promises, allowing us to write async code in a sequential-looking way. Unfortunately, introducing concurrency into the mix breaks this sequential abstraction, which means certain familiar problems emerge:

* Writing concurrent code is error-prone

* Concurrent code obscures our intent

* Programmers are bad at reasoning about concurrent code

Haxl attempts to reclaim this sequential abstraction, allowing us to write code that looks sequential, but is actually concurrent "behind the scenes".