Fable.Reactive is a lightweight Async Reactive library for F#.
Fable.Reactive is a library for asynchronous reactive programming, and is the implementation of Async Observables (ReactiveX) for F#. Fable.Reactive makes it easy to compose and combine streams of asynchronous event-based data such as timers, mouse-moves, keyboard input, web requests and enables you to do operations such as:
- Filtering
- Transforming
- Aggregating
- Combining
- Time-shifting
Fable.Reactive is cross-platform via Fable and is known to work on .NET, JavaScript, Python and BEAM. The same F# code may be used both client and server side for full stack software development.
This package was previously named (or known as) FSharp.Control.AsyncRx.
The namespace has changed from FSharp.Control to Fable.Reactive. Update
your open statements:
- open FSharp.Control
+ open Fable.ReactiveAll sub-namespaces and modules have been renamed accordingly:
| Old | New |
|---|---|
FSharp.Control |
Fable.Reactive |
FSharp.Control.Core |
Fable.Reactive.Core |
AsyncRx module |
Reactive module |
IAsyncRxDisposable |
IReactiveDisposable |
Documentation is currently being updated.
See Interoperability with .NET Reactive Extensions for existing observable, observer, and subscription adapters and their asynchronous execution boundaries.
Reactive.takeUntil notifier source stops forwarding source values when it observes a notifier value.
The two subscriptions deliver independently, so source values still in flight may be dropped when the
notifier stops the stream. Posting source values before a notifier value, even with sequential
do! sourceObserver.OnNextAsync ... calls, does not guarantee that downstream has received them.
When that ordering matters, arrange downstream acknowledgement before triggering the notifier.
When compiling for JavaScript, Python, or BEAM, use Fable 5.22.0 or newer. This compiler requirement does not apply to .NET-only applications.
dotnet paket add Fable.Reactive --project <project>