angular observable

Angular Promise Vs Angular Observable

Spesso nella realizzazione di applicazioni Angular viene utilizzato un particolare tipo di variabile: gli Observable.

Un oggetto di questo tipo viene ritornato, ad esempio, utilizzando il servizio Http di Angular, che ha sostituito il servizio $http presente in Angular Js.

Entrambi consentono di gestire chiamate asincrone ma in modalità differente: $http utilizza un meccanismo basato sulle Promise, Http utilizza un meccanismo basato sugli Observable.

Gli Observable sono un elemento fondamentale del Reacting Programming, per la gestione di stream di dati asincroni.

Ma perché utilizzare Observable al posto delle Promise?

Tutto ciò che è possibile fare con le Promise è possibile farlo anche tramite gli Observable. Non vale però il viceversa.

In tutti i casi è sempre possibile convertire un Observable in una Promise, utilizzando il metodo .toPromise(), seguito da .then(…) e la relativa chiamata di callback.

Gli Observable sono correlati ad un serie di operatori che consentono di elaborare i valori restituiti da una particolare fonte.
Tra questi operator troviamo le operazioni per effettuare concatenazioni, merge, recuperare solo l’ultimo o il primo elemento di un flusso: un pò come possiamo fare utilizzando Linq all’interno di .NET.


Una caratterista molto apprezzata è quella di poter ri-eseguire operazioni asincrone non andate a buon fine, cosa difficilmente replicabile utilizzando il modello basato sulle Promise.
Gli Observable si integrano molto bene con l’utilizzo di WebSocket, consentendo di gestire i dati durante il flusso di ricezione dal server.
Le Promise non sono associate ad un flusso: non esiste un modo per poter gestire il flusso di dati, perchè lo stato in cui si può trovare può essere quello di “soddisfatta” o “non soddisfatta”.


Nelle Promise ottieniamo il valore solo quando quando è stata soddisfatta e non è possibile re-iterare in maniera automatica la sua esecuzione in caso di fallimento.
Il meccanismo di “reperimento” dello stream di un Observable passa dal concetto di registrazione: la chiamata diventa una vera e propria sottoscrizione ad un servizio.
Questo particolare meccanismo consente di de-registrarsi in qualsiasi momento utilizzando il metodo unsubscribe(), che non è presente nel modello a Promise.

Pubblicato da

Andrea Merlin

Laureato in informatica, diversi corsi di specializzazione legati allo Sviluppo Software e alla Computer forensics. Appassionato di nuove tecnologie, amo la programmazione, la Business Intelligence e tematiche legate alla Privacy.Sempre alla ricerca di nuove idee, stimoli … e progetti da seguire!Amo trascorrere il tempo libero in Val Borbera, un piccolo angolo del Piemonte, in provincia di Alessandria.