Skip to content

Instantly share code, notes, and snippets.

@TheShinriel
Last active August 3, 2023 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TheShinriel/a66458ae8173e8e2c2ee0df984392371 to your computer and use it in GitHub Desktop.
Save TheShinriel/a66458ae8173e8e2c2ee0df984392371 to your computer and use it in GitHub Desktop.
// 🔍 Fonctions avancées liées aux Promesses en JavaScript/TypeScript
// 🔍 Fonction qui renvoie une Promesse résolue après un délai
function resolveAfterDelay(delay: number): Promise<string> {
return new Promise((resolve) => {
setTimeout(() => {
resolve(`Promesse résolue après ${delay} millisecondes`);
}, delay);
});
}
// 🔍 Utilisation de la Promesse avec .then()
resolveAfterDelay(2000)
.then((result) => {
console.log(result);
})
.catch((error) => {
console.error(error);
});
// 🔍 Utilisation de la Promesse avec async/await
async function asyncFunction() {
try {
const result = await resolveAfterDelay(3000);
console.log(result);
} catch (error) {
console.error(error);
}
}
asyncFunction();
// 🔍 Utilisation de Promise.all() pour attendre plusieurs Promesses
const promise1 = resolveAfterDelay(1000);
const promise2 = resolveAfterDelay(2000);
const promise3 = resolveAfterDelay(1500);
Promise.all([promise1, promise2, promise3])
.then((results) => {
console.log('Résultats de Promise.all() :', results);
// 👉 Résultat : ['Promesse résolue après 1000 millisecondes', 'Promesse résolue après 2000 millisecondes', 'Promesse résolue après 1500 millisecondes']
})
.catch((error) => {
console.error('Erreur de Promise.all() :', error);
});
// 🔍 Utilisation de Promise.race() pour récupérer la première Promesse résolue
const racePromise = Promise.race([
resolveAfterDelay(3000),
resolveAfterDelay(2500),
resolveAfterDelay(3500),
]);
racePromise
.then((result) => {
console.log('Résultat de Promise.race() :', result);
// 👉 Résultat : 'Promesse résolue après 2500 millisecondes'
})
.catch((error) => {
console.error('Erreur de Promise.race() :', error);
});
// 🔍 Utilisation de Promise.allSettled() pour gérer les erreurs de toutes les Promesses
const settledPromise1 = resolveAfterDelay(4000);
const settledPromise2 = resolveAfterDelay(5000).then(() => {
throw new Error('Promesse rejetée après 5 secondes');
});
Promise.allSettled([settledPromise1, settledPromise2])
.then((results) => {
console.log('Résultats de Promise.allSettled() :', results);
// 👉 Résultat : [
// { status: 'fulfilled', value: 'Promesse résolue après 4000 millisecondes' },
// { status: 'rejected', reason: Error: Promesse rejetée après 5 secondes }
// ]
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment