Junior
Quelle est la différence entre utiliser Promise et la syntaxe async/await?
sobes.tech IA
Réponse de l'IA
Promise représente un objet qui reflète la finalisation ou le rejet d'une opération asynchrone. Il gère les flux asynchrones à l'aide de callbacks .then() et .catch().
async/await est un sucre syntaxique sur Promise, qui rend le code asynchrone plus lisible et semblable au synchrone. Une fonction marquée comme async retourne toujours une Promise. L'opérateur await ne peut être utilisé qu'à l'intérieur d'une fonction async et suspend l'exécution jusqu'à ce que la Promise soit résolue ou rejetée, renvoyant son résultat ou lançant une exception.
| Aspect | Promise | Async/Await |
|---|---|---|
| Lisibilité | Nécessite des chaînes .then() et .catch() |
Semblable au code synchrone, flux linéaire |
| Gestion des erreurs | Utilise .catch() |
Utilise des blocs try...catch |
| Flux d'exécution | Géré par des callbacks | Suspend/reprend la fonction |
| Valeur retournée | Promise | Promise (pour la fonction async) ou résultat de Promise (pour await) |
| Dépendance | Mécanisme autonome | Basé sur Promise |
Exemple avec Promise :
// Exemple avec Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Données reçues (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Exemple avec async/await :
// Exemple avec async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Données reçues (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();