AsyncR3 (variant of AsyncRx) #2299
fedeAlterio
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
👋 R3Async - An Alternative Approach to Async Reactive Extensions
Hi Rx.NET community!
I wanted to share R3Async, an async reactive library that explores different design choices from Async.Rx. While I know you already have async support in Rx.NET (in preview), this is the async version of R3, which takes some different approaches compared to dotnet/reactive.
I'd really value your feedback on several design decisions (some inherited from R3, others specific to R3Async):
CancellationTokenbaked directly into the core API (OnNextAsync(T value, CancellationToken cancellationToken))Switch- actually waiting for previous tasks to be fully canceled before starting the next one, rather than just initiating cancellation (which can lead to overlapping operations)ToAsyncEnumerable- requiring users to explicitly provide a channel factory (() => Channel.CreateBounded<T>(capacity)) to choose buffering semantics (bounded/unbounded/rendezvous)OnErrorResumeAsyncinstead of terminating the stream on first errorConfigureAwait(false)- preserving context flow by design (reasoning detailed in the README, with references to IAsyncEnumerable LINQ and Async context runtime#113567 and Synchronization Context Rx.Net Async #1967)The README has detailed explanations and examples. The library is on NuGet with core operators implemented, though some features are still missing (BehaviorSubject, Publish, time-based operators like Throttle/Debounce, CombineLatest, etc.).
GitHub: https://github.com/fedeAlterio/R3Async
NuGet: https://www.nuget.org/packages/R3Async
Any thoughts, suggestions, or critiques would be greatly appreciated!
Beta Was this translation helpful? Give feedback.
All reactions