Junior
Quelle est la différence entre async/await et Promise?
sobes.tech IA
Réponse de l'IA
async/await est un sucre syntaxique au-dessus des promesses. Il permet d’écrire du code asynchrone de manière plus lisible et semblable à du code synchrone, en utilisant les mots-clés async pour les fonctions contenant await pour attendre la résolution d’une promesse. Les promesses sont des objets représentant la finalisation (ou l’échec) d’une opération asynchrone et sa valeur résultante.
| Caractéristique | async/await | Promise |
|---|---|---|
| Syntaxe | Plus proche du code synchrone. | Utilise les méthodes .then(), .catch(), .finally(). |
| Lisibilité | Généralement plus élevée, surtout dans les chaînes. | Peut conduire à du "Callback hell" dans des chaînes complexes. |
| Gestion des erreurs | Utilise try...catch standard. |
Utilise .catch() ou le second argument dans .then(). |
| Parallélisme | Nécessite l’utilisation explicite de Promise.all() ou Promise.allSettled(). |
Peut être plus explicite, mais moins lisible sans async/await. |
// Exemple avec Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Données reçues');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Exemple avec async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Données reçues');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();