Sobes.tech
Middle

Ce este un observable?

sobes.tech AI

Răspuns de la AI

Observable este o entitate care reprezintă un flux de date sau evenimente, care poate fi asincron. Sursele observabile pot emite valori pe o anumită perioadă de timp, iar abonații (Subscribers sau Observers) pot reacționa la aceste valori pe măsură ce apar.

Concepte cheie:

  • Observable (Sursă observabilă): Sursă de date sau evenimente.
  • Observer (Observator): Obiect cu metode pentru a reacționa la evenimentele din Observable (next, error, complete).
    • next: Primirea următoarei valori.
    • error: Apare o eroare.
    • complete: Fluxul de date se încheie.
  • Subscription (Abonament): Conexiune între Observable și Observer. Se creează prin apelarea metodei subscribe pe un Observable. Permite Observer-ului să primească valori și să gestioneze ciclul de viață al abonamentului (de exemplu, dezabonare pentru a preveni scurgerile de memorie).
  • Operators (Operatori): Funcții pentru transformarea, combinarea și gestionarea fluxurilor Observable. Exemple: map, filter, mergeMap, debounceTime.

Spre deosebire de Promises, Observable pot emite multiple valori în timp, reprezentând fluxuri de date, nu un eveniment asincron unic.

Exemplu de utilizare în RxJS (o bibliotecă populară pentru programare reactivă):

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

// Crearea unui Observable dintr-un array
const source = new Observable(observer => {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.complete(); // Încheierea fluxului
});

// Abonare și utilizare a operatorului
const subscription = source.pipe(
  map(value => value * 2) // Operatorul map dublează fiecare valoare
).subscribe({
  next: value => console.log(value), // Primește valorile: 2, 4, 6
  error: err => console.error(err), // Tratarea erorilor
  complete: () => console.log('Complete!') // Încheiere
});

Principalele avantaje:

  • Programare reactivă: gestionare convenabilă a fluxurilor de date asincrone.
  • Componibilitate: posibilitatea de a combina și transforma ușor fluxurile cu ajutorul operatorilor.
  • Gestionarea ciclului de viață: abonamentul permite gestionarea explicită a primirii datelor și prevenirea scurgerilor de memorie.