Sobes.tech
Middle

Cos'è un observable?

sobes.tech AI

Risposta dell'AI

Observable — è un flusso di dati che può emettere valori in modo asincrono. A differenza delle promesse, che restituiscono un singolo valore, un observable può emettere zero, uno o più valori nel tempo.

Caratteristiche principali:

  • Pigro: Il flusso inizia a funzionare solo quando ci si iscrive.
  • Annullabile: È possibile annullare l'iscrizione al flusso per fermarne l'esecuzione e liberare risorse.
  • Molti valori: Può emettere più valori, mentre le promesse si risolvono una sola volta.

Componenti principali:

  • Observable: Il flusso di dati stesso.
  • Observer: Oggetto con i metodi next, error e complete, chiamati dall'observable.
  • Subscription: Risultato dell'iscrizione a un observable, permette di annullare l'iscrizione.
  • Operatori: Funzioni che trasformano o combinano observable (ad esempio, map, filter, merge).

Esempio di utilizzo (RxJS):

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

const source = of(1, 2, 3); // Creiamo un observable che emette 1, 2, 3

const example = source.pipe(map(x => x + 1)); // Applichiamo l'operatore map

const subscription = example.subscribe({ // Ci iscriviamo all'observable
  next: value => console.log(`Next: ${value}`), // Gestione di ogni valore
  error: err => console.error(`Error: ${err}`), // Gestione degli errori
  complete: () => console.log('Complete!') // Chiamato al termine del flusso
});

// output:
// Next: 2
// Next: 3
// Next: 4
// Complete!

// subscription.unsubscribe(); // È possibile annullare l'iscrizione