Middle
Šta je observable?
sobes.tech АИ
Одговор од АИ
Observable je entitet koji predstavlja tok podataka ili događaja, koji može biti asinhroni. Izvori koji se mogu posmatrati mogu emitovati vrednosti tokom određenog perioda, a pretplatnici (Subscribers ili Observers) mogu reagovati na te vrednosti čim se pojave.
Ključni koncepti:
- Observable (Posmatrani izvor): Izvor podataka ili događaja.
- Observer (Posmatrač): Objekat sa metodama za reakciju na događaje iz Observable (
next,error,complete).next: Prijem sledeće vrednosti.error: Došlo je do greške.complete: Tok podataka se završava.
- Subscription (Pretplata): Veza između Observable i Observer. Kreira se pozivanjem metode
subscribena Observable. Omogućava Observeru da prima vrednosti i upravlja životnim ciklusom pretplate (npr. odjavljivanje radi sprečavanja curenja memorije). - Operators (Operatori): Funkcije za transformaciju, kombinovanje i upravljanje tokovima Observable. Primeri:
map,filter,mergeMap,debounceTime.
Za razliku od Promises, Observable mogu emitovati više vrednosti tokom vremena, predstavljajući tokove podataka, a ne jedan asinhroni događaj.
Primer upotrebe u RxJS (popularnoj biblioteci za reaktivno programiranje):
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
// Kreiranje Observable iz niza
const source = new Observable(observer => {
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete(); // Završetak toka
});
// Pretplata i korišćenje operatora
const subscription = source.pipe(
map(value => value * 2) // Operator map duplira svaku vrednost
).subscribe({
next: value => console.log(value), // Prima vrednosti: 2, 4, 6
error: err => console.error(err), // Obrada grešaka
complete: () => console.log('Complete!') // Završava
});
Glavne prednosti:
- Reaktivno programiranje: zgodno upravljanje asinhronim tokovima podataka.
- Komponovanje: mogućnost lako kombinovanja i transformisanja tokova pomoću operatora.
- Upravljanje životnim ciklusom: pretplata omogućava eksplicitno upravljanje primanjem podataka i sprečavanje curenja memorije.