Le Promises in JavaScript sono oggetti utilizzati per gestire operazioni asincrone. Rappresentano un valore che può essere disponibile ora, in futuro o mai. Le Promises possono essere in uno dei tre stati: pending (in attesa), fulfilled (completata con successo) e rejected (fallita).
Le Promises in JavaScript sono uno strumento potente per gestire operazioni asincrone. Consentono di scrivere codice più leggibile e gestire con eleganza il successo o il fallimento di operazioni asincrone come chiamate API.
Una Promise è un oggetto che rappresenta l'eventuale completamento o fallimento di un'operazione asincrona. Le Promises hanno tre stati:
Per creare una Promise, si utilizza il costruttore Promise
, che prende una funzione con due parametri: resolve
e reject
. La sintassi è la seguente:
const myPromise = new Promise((resolve, reject) => {
// Operazione asincrona
if (/* operazione ha successo */) {
resolve('Successo!');
} else {
reject('Errore!');
}
});
Per gestire il risultato di una Promise, si utilizzano i metodi then
e catch
:
myPromise.then((value) => {
console.log(value); // Gestisce il successo
}).catch((error) => {
console.error(error); // Gestisce l'errore
});
Ecco un esempio di una Promise che simula una richiesta API:
const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
const success = true; // Simula il successo della richiesta
if (success) {
resolve('Dati recuperati con successo!');
} else {
reject('Errore nel recupero dei dati.');
}
}, 2000);
});
};
fetchData().then((data) => {
console.log(data);
}).catch((error) => {
console.error(error);
});
const promise1 = Promise.resolve('Uno');
const promise2 = Promise.resolve('Due');
Promise.all([promise1, promise2]).then((values) => {
console.log(values); // ["Uno", "Due"]
});
const promise1 = new Promise((resolve) => setTimeout(resolve, 500, 'Uno'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'Due'));
Promise.race([promise1, promise2]).then((value) => {
console.log(value); // "Due"
});
Le Promises sono uno strumento essenziale per gestire operazioni asincrone in JavaScript. Consentono di scrivere codice più pulito e di gestire in modo efficace il successo e il fallimento delle operazioni asincrone.