first comit

This commit is contained in:
Johan
2025-12-15 16:08:10 +01:00
commit c2fea1f11a
6 changed files with 439 additions and 0 deletions

76
callback_hell.js Normal file
View File

@@ -0,0 +1,76 @@
//
// Exemple de "Callback Hell" en JavaScript
// Comme on peut le constater, chaque opération dépend du résultat de la précédente.
// Cela conduit à une indentation profonde et rend le code difficile à lire et à maintenir.
//
// --- Fonctions asynchrones simulées ---
// 1. Récupère un utilisateur
function getUser(id, callback) {
console.log("Recherche de l'utilisateur...");
setTimeout(() => {
// Simule un succès ou une erreur aléatoire
if (id === 1) {
const user = { id: 1, name: "Alice" };
callback(null, user); // Pas d'erreur, on renvoie l'utilisateur
} else {
callback("Utilisateur non trouvé", null); // Erreur
}
}, 1000); // Attend 1 seconde
}
// 2. Récupère les permissions de l'utilisateur
function getPermissions(user, callback) {
console.log(`Recherche des permissions pour ${user.name}...`);
setTimeout(() => {
const permissions = { level: "admin" };
callback(null, permissions);
}, 1000);
}
// 3. Récupère les articles de blog de l'utilisateur
function getPosts(user, callback) {
console.log(`Recherche des articles de ${user.name}...`);
setTimeout(() => {
const posts = ["Article 1", "Article 2", "Article 3"];
callback(null, posts);
}, 1000);
}
// --- Le Début du Callback Hell ---
console.log("Début du processus...");
getUser(1, (error, user) => {
if (error) {
console.error(error);
} else {
console.log("Utilisateur trouvé :", user);
// Une fois qu'on a l'utilisateur, on lance la 2ème opération
getPermissions(user, (error, permissions) => {
if (error) {
console.error(error);
} else {
console.log("Permissions trouvées :", permissions);
// Une fois qu'on a les permissions, on lance la 3ème opération
getPosts(user, (error, posts) => {
if (error) {
console.error(error);
} else {
console.log("Articles trouvés :", posts);
// On a enfin toutes nos données
console.log("\n--- Résultat final ---");
console.log(`Nom de l'utilisateur : ${user.name}`);
console.log(`Niveau de permission : ${permissions.level}`);
console.log(`Derniers articles : ${posts.join(', ')}`);
}
});
}
});
}
});