This commit is contained in:
Johan
2025-12-16 09:52:33 +01:00
parent e12f647766
commit 00c806ddee
2 changed files with 88 additions and 19 deletions

View File

@@ -42,9 +42,43 @@ const coffeeApi = {
}, config.TEMPS_SELECTION);
});
},
// TODO : implémenter les autres fonctions de l'API de la machine à café.
moudreGrains(coffeeName) {
return new Promise((resolve) => {
console.log(` - Broyage des grains pour "${coffeeName}"...`);
setTimeout(() => {
console.log(` -> Grains moulus.`);
resolve('grains-moulus');
}, config.TEMPS_MOUTURE);
});
},
chaufferEau(temperature) {
return new Promise((resolve) => {
console.log(` - Chauffage de l'eau à ${temperature}°C`);
setTimeout(() => {
console.log(` -> Eau chaude prête`);
resolve('eau-chaude');
}, config.TEMPS_CHAUFFAGE);
});
},
nettoyerTasse() {
return new Promise((resolve) => {
console.log(` - Lavage de la tasse...`);
setTimeout(() => {
console.log(` -> Tasse propre.`);
resolve('tasse-propre');
}, config.TEMPS_NETTOYER);
});
},
preparerCafe(coffeeName) {
return new Promise((resolve) => {
console.log(` - Préparation du café ${coffeeName}...`);
setTimeout(() => {
const finalCoffee = `café ${coffeeName} préparé`;
console.log(` -> ${finalCoffee.charAt(0).toUpperCase() + finalCoffee.slice(1)}.`);
resolve(finalCoffee);
}, config.TEMPS_PREPARATION);
});
}
};
@@ -58,9 +92,14 @@ async function runSequentialPreparation() {
console.log("\n--- SCÉNARIO 1 : préparation simple ---");
console.time("Temps total (séquentiel)");
try {
// TODO : implémenter le scénario 1 en utilisant async/await.
const coffeeName = 'Lungo';
const selectedCoffee = await coffeeApi.selectionnerCafe(coffeeName);
await coffeeApi.moudreGrains(selectedCoffee);
await coffeeApi.chaufferEau(95);
await coffeeApi.nettoyerTasse();
const finalCoffee = await coffeeApi.preparerCafe(selectedCoffee);
//console.log(`\nSUCCÈS : votre ${finalCoffee} est servi !`);
console.log(`\nSUCCÈS : votre ${finalCoffee} est servi !`);
} catch (error) {
console.error("ERREUR : la préparation a échoué.", error.message);
} finally {
@@ -76,11 +115,17 @@ async function runOptimizedPreparation() {
console.log("\n--- SCÉNARIO 2 : préparation optimisée, avec exécution concurrente de certaines tâches ---");
console.time("Temps total (optimisé)");
try {
// TODO : implémenter le scénario 2 en utilisant async/await et Promise.all.
// Astuce : Promise.all retourne un tableau contenant les résultats des promesses dans le même ordre.
// Vous pouvez utiliser la déstructuration pour les récupérer facilement : const [resultat1, resultat2, ...] = await Promise.all(...)
//console.log(`\nSUCCÈS (optimisé) : votre ${finalCoffee} est servi !`);
const coffeeName = 'Americano';
const selectedCoffee = await coffeeApi.selectionnerCafe(coffeeName);
console.log("-> Lancement en parallèle du broyage, du chauffage et du lavage...");
await Promise.all([
coffeeApi.moudreGrains(selectedCoffee), // Tâche 1
coffeeApi.chaufferEau(92), // Tâche 2
coffeeApi.nettoyerTasse() // Tâche 3
]);
console.log("-> Tâches parallèles terminées.");
const finalCoffee = await coffeeApi.preparerCafe(selectedCoffee);
console.log(`\nSUCCÈS (optimisé) : votre ${finalCoffee} est servi !`);
} catch (error) {
console.error("ERREUR (optimisé) : la préparation a échoué.", error.message);
} finally {