𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗣𝗿𝗼𝗺𝗶𝘀𝗲𝘀

Una Promise rappresenta il risultato di un compito asincrono.

Si usano le Promise per le chiamate API, le query al database e la lettura di file.

Una Promise ha tre stati:

  • Pending: Il compito è ancora in esecuzione.
  • Fulfilled: Il compito è terminato con successo.
  • Rejected: Il compito è fallito a causa di un errore.

La struttura è la seguente:

const promise = new Promise((resolve, reject) => { // L'executor viene eseguito immediatamente });

Si gestiscono i risultati con questi metodi:

  • .then(): Viene eseguito quando la promise ha successo.
  • .catch(): Viene eseguito quando la promise fallisce.
  • .finally(): Viene eseguito quando il compito termina, indipendentemente dall'esito.

Regole importanti da ricordare:

  • Il primo esito vince. Se chiami resolve() e poi reject(), vince resolve().
  • La funzione executor viene eseguita in modo sincrono.
  • L'uso di async e await rende il codice più facile da leggere rispetto all'uso di .then().

Gestione di più promise:

  • Promise.all(): Segue un approccio "fail-fast". Se una promise fallisce, l'intero gruppo fallisce.
  • Promise.allSettled(): Attende che ogni promise finisca. Restituisce i risultati anche se alcuni compiti falliscono.

Riassunto:

  • Promise: Un gestore di risultati asincroni.
  • resolve: Indica il successo.
  • reject: Indica il fallimento.
  • async/await: Un modo più pulito per scrivere le promise.
  • Promise.all: Si interrompe al primo errore.
  • Promise.allSettled: Completa tutti i compiti.

Fonte: https://dev.to/malik786/javascript-promises-2hn4