RxJS Playground
Тестирайте и експериментирайте с RxJS реактивни модели на програмиране, observables и оператори в реално време
Вход
Изход
Прочети ме
Какво е реактивно програмиране?
Реактивното програмиране е парадигма за програмиране, фокусирана върху потоци от данни и разпространение на промени. Вместо да пишете код, който явно извлича и обработва данни стъпка по стъпка, описвате как данните трябва да текат и да се трансформират във времето. Когато стойностите се променят, актуализациите автоматично се разпространяват през вашето приложение. Помислете за това като за електронна таблица: когато актуализирате клетка A1, всички клетки, които референцират A1, автоматично се преизчисляват. Този подход е отличен за обработка на асинхронни събития като взаимодействия на потребителя, HTTP отговори, WebSocket съобщения и таймери.
Как работи RxJS?
RxJS (Reactive Extensions за JavaScript) реализира реактивното програмиране чрез Observables—обекти, които излъчват стойности във времето. Основните концепции са:
- Observable: Източник на данни, който излъчва стойности (като поток от click събития или API отговори)
- Observer: Потребител, който реагира на излъчени стойности чрез callback функции (next, error, complete)
- Subscription: Връзката между Observable и Observer
- Operators: Функции, които трансформират, филтрират, комбинират или манипулират потоци от данни
- Subjects: Специални Observables, които действат както като източник на данни, така и като потребител, позволявайки multicasting
Създавате потоци от данни, като свързвате operators с метода pipe(), трансформирайки сурови потоци в точната форма на данни, която вашето приложение нуждае.
Описание на инструмента
RxJS Playground е интерактивна браузър-базирана пясъчница за експериментиране с концепции на реактивното програмиране в RxJS. Пишете и изпълнявайте RxJS код директно в редактора с пълен достъп до RxJS библиотеката и всички operators. Пясъчницата изпълнява вашия код автоматично, докато пишете (с забавяне), показвайки изхода на конзолата в панел със стил на терминал. Идеална е за изучаване на RxJS концепции, прототипиране на трансформации на данни, отстраняване на грешки в Observable потоци и тестване на комбинации от operators без настройка на среда за разработка.
Функции
- Пълен достъп до RxJS библиотеката: Всички функции за създаване (
of,from,interval,fromEventи т.н.) и operators са налични - Изпълнение в реално време: Кодът се изпълнява автоматично с 500ms забавяне, докато пишете
- Изход на терминала: Логове на конзолата, грешки и предупреждения се показват в стилизиран терминал
- Подсветяване на синтаксиса: JavaScript редактор с правилно подсветяване на синтаксиса
- Показване на върнати стойности: Финални стойности на израза автоматично се логват със стрелка нотация
- Обработка на грешки: Ясни съобщения за грешки при синтаксис и runtime проблеми
- Модул Operators: Директен достъп до
rxjs/operatorsза трансформации базирани на pipe
Примери
Основно създаване на Observable:
const { of, from, interval } = rxjs;
// Излъчване на отделни стойности
of(1, 2, 3).subscribe((x) => console.log(x));
// Преобразуване на масив в Observable
from([10, 20, 30]).subscribe((x) => console.log(x));Използване на Operators:
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));
// Изход: 20, 40Комбиниране на потоци:
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));Subjects за Multicasting:
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);Потоци за трансформация:
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));Налични модули
rxjs (основен модул):
- Създаване:
of,from,interval,timer,range,generate,defer,iif - Комбиниране:
merge,concat,combineLatest,forkJoin,zip,race - Subjects:
Subject,BehaviorSubject,ReplaySubject,AsyncSubject - Утилити:
firstValueFrom,lastValueFrom,isObservable
operators (pipeable operators):
- Трансформация:
map,pluck,scan,reduce,buffer,switchMap,mergeMap,concatMap - Филтриране:
filter,take,takeUntil,skip,debounceTime,throttleTime,distinctUntilChanged - Комбиниране:
withLatestFrom,combineLatestWith,mergeWith,startWith - Обработка на грешки:
catchError,retry,retryWhen - Утилити:
tap,delay,timeout,toArray,share,shareReplay
Случаи на употреба
- Изучаване на RxJS: Разберете концепциите на Observable чрез практическо експериментиране
- Прототипиране на потоци от данни: Проектирайте и тествайте реактивни потоци от данни преди внедряване
- Отстраняване на грешки в Operators: Изолирайте и проверете поведението на operators с опростени примери
- Подготовка за интервю: Практикувайте модели на реактивно програмиране и често срещани проблеми
- Демонстрации за преподаване: Покажете концепции на реактивното програмиране с живи, интерактивни примери