Middle
Kas yra observable?
sobes.tech AI
Atsakymas iš AI
Observable yra objektas, kuris atstovauja duomenų arba įvykių srautą, kuris gali būti asinchroninis. Stebimi šaltiniai gali išleisti reikšmes tam tikru laikotarpiu, o prenumeratoriai (Subscribers arba Observers) gali reaguoti į šias reikšmes jų atsiradimo metu.
Pagrindinės sąvokos:
- Observable (Stebimas šaltinis): Duomenų arba įvykių šaltinis.
- Observer (Stebėtojas): Objektas su metodais
next,error,complete, kurie reaguoja į įvykius iš Observable:next: Gauti kitą reikšmę.error: Įvyko klaida.complete: Duomenų srautas baigtas.
- Subscription (Prenumerata): Ryšys tarp Observable ir Observer. Prenumerata sukuriama iškvietus
subscribemetodą ant Observable. Ji leidžia Observer gauti reikšmes ir valdyti prenumeratos gyvavimo ciklą. - Operators (Operatoriai): Funkcijos, kurios transformuoja, sujungia ir valdo Observable srautus. Pavyzdžiai:
map,filter,mergeMap,debounceTime.
Observable, skirtingai nuo Promises, gali išleisti daug reikšmių per tam tikrą laiką, atstovaudamas duomenų srautą, o ne vienkartinę asinchroninę įvykį.
Pavyzdys naudojant RxJS (populiari reaktyvaus programavimo biblioteka):
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
// Observable sukūrimas iš masyvo
const source = new Observable(observer => {
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete(); // Baigti srautą
});
// Prenumerata ir operatoriaus naudojimas
const subscription = source.pipe(
map(value => value * 2) // `map` operatorius dvigubina kiekvieną reikšmę
).subscribe({
next: value => console.log(value), // Gauti reikšmes: 2, 4, 6
error: err => console.error(err), // Klaidos apdorojimas
complete: () => console.log('Complete!') // Baigti
});
Pagrindiniai privalumai:
- Reaktyvus programavimas: patogu valdyti asinchroninius duomenų srautus.
- Kompozicija: lengva sujungti ir transformuoti srautus naudojant operatorius.
- Gyvenimo ciklo valdymas: prenumerata leidžia aiškiai valdyti duomenų gavimą ir išvengti atminties nutekėjimo.