𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗣𝗿𝗼𝗺𝗶𝘀𝗲𝘀
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.
