first comit
This commit is contained in:
76
callback_hell.js
Normal file
76
callback_hell.js
Normal 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(', ')}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user