Libreria RxJs

Javascript e Promise

Con Javascript è possibile utilizzare il concetto di Promise, un particolare costrutto che consente di gestire i processi asincroni. Sono disponibili a partire da ECMAScript 2015, e permettono di scrivere codice semplice e quindi mantenibile. Fino a qualche anno fa, l’utilizzo delle promise era possibile solo utilizzando alcune librerie esterne, complicandone di fatto l’utilizzo.

Per poter utilizzare un oggetto promise è necessario per prima cosa crearne un’istanza passando come parametro una funzione. Questa funzione potrà avere due argomenti:

  • uno per risolvere la promise
  • uno per rifiutare la promise

La chiamata a resolve consente di risolvere una Promise, mentre la chiamata reject consente di rifiutarla.

Stati della promise

Una Promise può trovarsi in 3 stati differenti:

  • fullfilled (risolta): il valore della promise è disponibile, la chiamata asincrona a cui si riferisce ha restituito un valore
  • rejected (rifiuta): la chiamata asincrona non ha restituito un valore (ad esempio per il verificarsi di un errore)
  • pending: quando non si trova in uno dei casi precedenti

Per poter processare lo stato e l’esecuzione di una Promise si utilizzano due funzioni utilizzate concatenandole: then e catch. La funzione utilizzata come parametro all’interno di then è delegata alla gestione della promise risolva, mentre la funzione indicata come parametro all’interno di catch viene delegata alla gestione della promise rifiutata.

Ovviamente è possibile concatenare  più then e catch tra loro.

Le promise vengono utilizzate, ad esempio, all’interno di chiamate REST verso API.

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.