Last active
August 3, 2023 13:01
-
-
Save TheShinriel/a66458ae8173e8e2c2ee0df984392371 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 🔍 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