async-await-demo.js
async function fetchUserData(userId) {
try {
// Simuler une requête API avec un délai
const userResponse = await fetch(`https://api.example.com/users/${userId}`);
if (!userResponse.ok) throw new Error(`Erreur HTTP: ${userResponse.status}`);
const userData = await userResponse.json();
// Simuler une requête de base de données avec un délai
const postsResponse = await fetch(`https://api.example.com/users/${userId}/posts`);
if (!userResponse.ok) throw new Error(`Erreur HTTP: ${postsResponse.status}`);
const postsData = await postsResponse.json();
return {
user: userData,
posts: postsData,
combinedData: [...userData.tags, ...postsData.tags]
};
} catch (error) {
console.error('Erreur dans fetchUserData:', error.message);
throw error; // Re-lancer l'erreur pour que le caller puisse la gérer
}
}
// Exemple d'utilisation avec gestion d'erreur
async function displayUserData() {
try {
const userData = await fetchUserData(42);
console.log('Données utilisateur:', userData);
} catch (error) {
console.error('Erreur dans displayUserData:', error.message);
// Ici, vous pourriez afficher une notification à l'utilisateur
// ou rediriger vers une page d'erreur
}
}
// Appel de la fonction
(async () => {
await displayUserData();
})();