RxJS Playground
RxJS is a library for reactive programming using Observables, to make it easier to compose asynchronous or callback-based code
const { rxObserver } = require('api/v0.3');
const { timer } = require('rxjs');
const { take } = require('rxjs/operators');
timer(0, 5)
.pipe(
take(10)
)
.subscribe(rxObserver());
If you're just starting your RxJS journey — we'd advise you to start with these examples first:
- timer — starts emitting values after given timeout with set interval
- map — apply a function to each value on the stream
- filter — filter only values matching predicate function
- subscribe — basically tells the Observable that we're ready to receive values
If you are a seasoned Observer — do checkout these examples:
- expand — recursively turns each emission into another stream
- share — share subscription among multiple observers
- catch — handle errors gracefully
- dematerialize — pure magic
Also, be sure to know these differences:
- debounceTime vs throttleTime vs auditTime vs sampleTime
- mergeMap vs exhaustMap vs switchMap vs concatMap
- first vs take vs single
- map vs pluck
And check out this experimental pipeline |>
operator ⚠️
📖 My articles
"Error handling in RxJS" 😱
Learn how to deal with errors and retry failed requests
"Pausable Observables in RxJS" 🌊
Create a push back force in your streams
"Rx+JSX experiment: Recks" 🐶<div>{ timer(0, 100) }</div>
— Observables inside JSX
"RegExp syntax for Observables: Never Been Easier!" 📝
Use regexp-like syntax to query observables. EXPERIMENT
"RxJS debounce vs throttle vs audit vs sample" 🤔
Difference You Should Know
⚙️ API notes
In this playground we added both RxJS 6 and a compatibility rxjs-compat package, that allows you to write code in RxJS 6 or in RxJS 5 style
You can use them via require('rxjs')
and require('rxjs/operators')
or just require('rxjs/Rx')
for rxjs-compat version.
To visualize observables we developed a small API:
Provided api/v0.3
package has a function rxObserver(title?: string): Observer
, that creates an Rx Observer to display marbles on the diagram
const { rxObserver } = require('api/v0.3');
const observer = rxObserver('Thread name');
observer.next(0);
setTimeout(() => observer.next(1), 100);
setTimeout(() => observer.next(2), 200);
setTimeout(() => observer.complete(), 200);
🔗 External links
- rxjs.dev — official website for RxJS 6
- learnrxjs.io — clear examples, explanations, and resources for rxjs
- rxviz.com — animated playground for rx observables