-
This needs a comparison with streams, which is the standard way to achieve this in Node.js land.
https://nodejs.org/api/stream.html
-
CodeRabbit
CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
-
Disclaimer: I am the author of this library [1].
A few days ago, I ported ocaml/Event [2] to JavaScript, which provides concurrent ML-style synchronization operations.
It is possible to implement `Channel` and `select` in JS, but it is not easy to provide an idiomatic API and integrate it with the Promise ecosystem.
[1]: https://github.com/dhcmrlchtdj/sync-op
-
channels
An implementation of a closable, tailable `Channel` primitive in idiomatic JavaScript that can be used to decouple producers and consumers in concurrent code. (by ggoodman)
I took a stab at this a while back using an object to represent the possible resolutions. The keys of the object become a signal upon resolution that indicates which branch fired. https://github.com/ggoodman/channels#select-key-string-chann...
Ultimately though, I don't believe that channels are an abstraction that makes sense in JavaScript's concurrency model. Go's contexts, on the other hand, would be a huge improvement over AbortController and AbortSignal.
Related posts
-
How to convert Node.js stream callback functions into an Async Iterator
-
Buffered vs Streaming Data Transfer
-
pipesAreFun
-
Also keep in mind that a one line module always is more than one line of code
-
Also keep in mind that a one line module always is more than one line of code. It's documentation, tests, and history in the repo.