Middle
Czym jest observable?
sobes.tech AI
Odpowiedź od AI
Observable to byt podmiotem reprezentującym strumień danych lub zdarzeń, który może być asynchroniczny. Źródła obserwowalne mogą emitować wartości przez określony czas, a subskrybenci (Subscribers lub Observers) mogą reagować na te wartości w miarę ich pojawiania się.
Kluczowe koncepcje:
- Observable (Źródło obserwowalne): Źródło danych lub zdarzeń.
- Observer (Obserwator): Obiekt z metodami do reagowania na zdarzenia z Observable (
next,error,complete).next: Odbiór kolejnej wartości.error: Wystąpienie błędu.complete: Zakończenie strumienia danych.
- Subscription (Subskrypcja): Połączenie między Observable a Observer. Subskrypcja jest tworzona podczas wywołania metody
subscribena Observable. Pozwala Observerowi na odbieranie wartości i zarządzanie cyklem życia subskrypcji (np. anulowanie, aby zapobiec wyciekom pamięci). - Operators (Operatory): Funkcje do transformacji, łączenia i zarządzania strumieniami Observable. Przykłady:
map,filter,mergeMap,debounceTime.
W przeciwieństwie do Promise, Observable mogą emitować wiele wartości w czasie, reprezentując strumienie danych, a nie pojedyncze asynchroniczne zdarzenie.
Przykład użycia w RxJS (popularnej bibliotece do programowania reaktywnego):
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
// Tworzenie Observable z tablicy
const source = new Observable(observer => {
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete(); // Zakończenie strumienia
});
// Subskrypcja i użycie operatora
const subscription = source.pipe(
map(value => value * 2) // Operator map podwaja każdą wartość
).subscribe({
next: value => console.log(value), // Odbiór wartości: 2, 4, 6
error: err => console.error(err), // Obsługa błędów
complete: () => console.log('Complete!') // Zakończenie
});
Główne zalety:
- Programowanie reaktywne: wygodne zarządzanie asynchronicznymi strumieniami danych.
- Komponowalność: możliwość łatwego łączenia i transformacji strumieni za pomocą operatorów.
- Zarządzanie cyklem życia: subskrypcja pozwala na jawne zarządzanie odbiorem danych i zapobieganie wyciekom pamięci.