RxJS mänguväljak
Testi ja katseta RxJS reaktiivse programmeerimise mustreid, observables'e ja operaatoreid reaalajas
Sisend
Väljund
Loe mind
Mis on reaktiivne programmeerimine?
Reaktiivne programmeerimine on programmeerimismeetod, mis keskendub andmevoogudele ja muutuste levikule. Selle asemel, et kirjutada kood, mis samm-sammult andmeid hankib ja töötleb, kirjeldad, kuidas andmed peaksid aja jooksul voolama ja muutuma. Kui väärtused muutuvad, levivad värskendused automaatselt läbi sinu rakenduse. Mõtle sellele nagu arvutustabelile: kui uuendad lahtrit A1, arvutavad kõik A1-le viitavad lahtrid automaatselt ümber. See lähenemine sobib eriti hästi asünkroonsete sündmuste, nagu kasutajategevused, HTTP‑vastused, WebSocket‑sõnumid ja taimerid, käsitlemiseks.
Kuidas RxJS töötab?
RxJS (Reactive Extensions for JavaScript) realiseerib reaktiivset programmeerimist Observable‑de abil — objektide, mis kiirustavad väärtusi aja jooksul. Põhikontseptsioonid on:
- Observable: Andmeallikas, mis kiirustab väärtusi (näiteks klõpsusündmuste või API‑vastuste voog)
- Observer: Tarbija, mis reageerib kiirustatud väärtustele läbi tagasikutsete (next, error, complete)
- Subscription: Ühendus Observable’i ja Observeri vahel
- Operators: Funktsioonid, mis teisendavad, filtreerivad, kombineerivad või muul viisil manipuleerivad andmevoogudega
- Subjects: Erilised Observable‑d, mis toimivad nii andmeallikana kui ka tarbijana, võimaldades mitmekordset edastamist
Sa lood andmevooge, ühendades operaatorid pipe() meetodi abil, muutes toored vood täpselt selliseks andmestruktuuriks, mida sinu rakendus vajab.
Tööriista kirjeldus
RxJS Playground on interaktiivne brauseripõhine liivakast, kus saab katsetada RxJS‑i reaktiivse programmeerimise kontseptsioone. Kirjuta ja käivita RxJS‑i kood otse redaktoris, kasutades täielikku ligipääsu RxJS‑i teekidele ja kõigile operaatoritele. Playground käivitab sinu koodi automaatselt, kui sa kirjutad (debounce‑ga), ning kuvab konsooli väljundi terminalilaadse paneeli kujul. See on ideaalne RxJS‑i kontseptsioonide õppimiseks, andmetöötluste prototüüpimiseks, Observable‑i torustike silumiseks ja operaatorite kombinatsioonide testimiseks ilma arenduskeskkonda seadistamata.
Funktsioonid
- Täielik RxJS‑i teekide ligipääs: Kõik loomise funktsioonid (
of,from,interval,fromEventjne) ja operaatorid on saadaval - Reaalajas käivitamine: Kood käivitub automaatselt 500 ms viivitusega, kui sa kirjutad
- Terminali väljund: Konsooli logid, vead ja hoiatused kuvatakse stiilitud terminalis
- Süntaksi esiletõstmine: JavaScript‑i koodiredaktor koos korrektse süntaksi esiletõstmisega
- Tagastatud väärtuse kuvamine: Lõplikud avaldised logitakse automaatselt noolemärgiga
- Vigade käsitlemine: Selged veateated süntaksi- ja jooksuaegsete probleemide korral
- Operaatorite moodul: Otsene ligipääs
rxjs/operators‑ile torupõhisteks teisendusteks
Näited
Põhiline Observable’i loomine:
const { of, from, interval } = rxjs;
// Kiirusta üksikuid väärtusi
of(1, 2, 3).subscribe((x) => console.log(x));
// Muuda massiiv Observable’iks
from([10, 20, 30]).subscribe((x) => console.log(x));Operaatorite kasutamine:
const { of } = rxjs;
const { map, filter, take } = operators;
of(1, 2, 3, 4, 5)
.pipe(
filter((x) => x % 2 === 0),
map((x) => x * 10),
)
.subscribe((x) => console.log(x));
// Väljund: 20, 40Voogude kombineerimine:
const { of, merge, concat } = rxjs;
const stream1 = of("A", "B");
const stream2 = of("X", "Y");
merge(stream1, stream2).subscribe((x) => console.log("merge:", x));
concat(stream1, stream2).subscribe((x) => console.log("concat:", x));Subject’id mitmekordseks edastamiseks:
const { Subject, BehaviorSubject } = rxjs;
const subject = new Subject();
subject.subscribe((v) => console.log("Observer 1:", v));
subject.subscribe((v) => console.log("Observer 2:", v));
subject.next(1);
subject.next(2);Teisendustoru:
const { from } = rxjs;
const { map, reduce, toArray } = operators;
from([1, 2, 3, 4, 5])
.pipe(
map((x) => x * 2),
toArray(),
)
.subscribe((arr) => console.log("Doubled:", arr));Saadaolevad moodulid
rxjs (peamoodul):
- Loomine:
of,from,interval,timer,range,generate,defer,iif - Kombineerimine:
merge,concat,combineLatest,forkJoin,zip,race - Subject’id:
Subject,BehaviorSubject,ReplaySubject,AsyncSubject - Utiliidid:
firstValueFrom,lastValueFrom,isObservable
operators (torupõhised operaatorid):
- Teisendamine:
map,pluck,scan,reduce,buffer,switchMap,mergeMap,concatMap - Filtreerimine:
filter,take,takeUntil,skip,debounceTime,throttleTime,distinctUntilChanged - Kombineerimine:
withLatestFrom,combineLatestWith,mergeWith,startWith - Vea käsitlemine:
catchError,retry,retryWhen - Utiliidid:
tap,delay,timeout,toArray,share,shareReplay
Kasutusjuhtumid
- RxJS õppimine: Mõista Observable’i kontseptsioone praktilise katsetamise kaudu
- Andmevoogude prototüüpimine: Kujunda ja testi reaktiivseid andmetorusid enne rakendamist
- Operaatorite silumine: Isoleeri ja kontrolli operaatori käitumist lihtsate näidete abil
- Intervjuu ettevalmistus: Harjuta reaktiivseid programmeerimismustreid ja levinud probleeme
- Õpetusdemonstratsioonid: Näita reaktiivseid kontseptsioone otse, interaktiivsete näidete abil