JavaScript
HTML
CSS
PHP
Coming Soon
Generatori
Varie & Old

Le Promesse (Promise)

Le Promesse (Promise) in JavaScript

Le Promise sono uno strumento introdotto in JavaScript per gestire il codice asincrono in modo più chiaro ed efficace. Una Promise rappresenta un'operazione che può essere completata con successo (resolved) o fallire (rejected). Permettono di scrivere codice più leggibile e di evitare annidamenti complessi di funzioni (callback hell).

Introduzione alle Promise

Una Promise è un oggetto che rappresenta il risultato futuro di un'operazione asincrona. Ha tre stati principali:

  • pending: in attesa, l’operazione non è ancora conclusa
  • fulfilled: l’operazione è terminata con successo
  • rejected: l’operazione è terminata con errore

Creare una Promise

Una Promise si crea con il costruttore new Promise() che riceve una funzione con due parametri: resolve e reject. Vediamo un esempio semplice.

Codice Esempio: Creazione di una Promise

CODE: Javascriptpreleva codice
  1. let promessa = new Promise((resolve, reject) => {
  2.   let successo = true;
  3.  
  4.   if (successo) {
  5.     resolve("Operazione completata!");
  6.   } else {
  7.     reject("Si è verificato un errore.");
  8.   }
  9. });
  10.  
  11. // Uso della Promise
  12. promessa.then((messaggio) => {
  13.   console.log(messaggio); // "Operazione completata!"
  14. }).catch((errore) => {
  15.   console.log(errore); // "Si è verificato un errore."
  16. });

Uso di then() e catch()

then() viene eseguito quando la Promise è risolta con successo, mentre catch() viene eseguito in caso di errore. È possibile concatenare più then per gestire una sequenza di operazioni.

Codice Esempio: Chaining con Promise

CODE: Javascriptpreleva codice
  1. let promessa = new Promise((resolve) => {
  2.   resolve(5);
  3. });
  4.  
  5. promessa
  6.   .then((numero) => {
  7.     console.log(numero); // 5
  8.     return numero * 2;
  9.   })
  10.   .then((risultato) => {
  11.     console.log(risultato); // 10
  12.   })
  13.   .catch((errore) => {
  14.     console.log("Errore:", errore);
  15.   });

Esempio con setTimeout

Un caso comune è l’uso delle Promise per gestire operazioni asincrone simulate con setTimeout.

Codice Esempio: Promise con setTimeout

CODE: Javascriptpreleva codice
  1. function operazioneAsincrona() {
  2.   return new Promise((resolve) => {
  3.     setTimeout(() => {
  4.       resolve("Risultato dopo 2 secondi");
  5.     }, 2000);
  6.   });
  7. }
  8.  
  9. operazioneAsincrona().then((messaggio) => {
  10.   console.log(messaggio); // "Risultato dopo 2 secondi"
  11. });

Tabella riassuntiva

Metodo Descrizione Esempio sintetico
then()Gestisce il risultato in caso di successopromise.then(val => console.log(val))
catch()Gestisce gli erroripromise.catch(err => console.log(err))
finally()Esegue codice in ogni caso (successo o errore)promise.finally(() => console.log("finito"))

Considerazioni

Le Promise hanno reso la gestione del codice asincrono molto più chiara rispetto alle sole callback. Sono la base su cui si fonda anche la sintassi moderna async/await, che vedremo subito dopo.


I Cookie su questo sito:

Il nostro sito utilizza cookie e altre tecnologie in modo tale che sia noi, sia i nostri partner, possiamo ricordarci di te e capire come tu e gli altri visitatori utilizzate il nostro sito. Qui puoi trovare ulteriori informazioni sui cookie e le altre tecnologie. Chiudendo questo banner o continuando la navigazione acconsenti all'uso dei cookie. Acconsento Info Cookies