// =================================================================== // API de Cuisine pour cuisson de pâtes - Fonctions Asynchrones // // Chaque fonction simule une étape de la préparation et retourne // une Promise. Cette approche modulaire sépare la logique de // chaque action de son orchestration. // =================================================================== /** * @typedef {object} ConfigCuisson * @property {number} TEMPS_EBULLITION - Temps en ms pour que l'eau arrive à ébullition. * @property {number} TEMPS_CUISSON_SAUCE - Temps en ms pour préparer la sauce. * @property {number} TEMPS_CUISSON_PATES - Temps en ms pour cuire les pâtes. * @property {number} TEMPS_MELANGE - Temps en ms pour mélanger et servir. */ /** @type {ConfigCuisson} */ export const config = { TEMPS_EBULLITION: 1500, TEMPS_CUISSON_SAUCE: 1200, TEMPS_CUISSON_PATES: 1000, TEMPS_MELANGE: 400, }; // --- API de la cuisine (fonctions "promisifiées") --- export const apiCuisson = { /** * Simule la mise à ébullition de l'eau. * @returns {Promise} Promesse qui se résout avec 'eau-bouillante'. */ chaufferEau() { return new Promise((resolve) => { console.log(" - L'eau chauffe..."); setTimeout(() => { console.log(" -> L'eau est à ébullition."); resolve('eau-bouillante'); }, config.TEMPS_EBULLITION); }); }, /** * Simule la préparation de la sauce. * @param {string} typeSauce - Le type de sauce à préparer. * @returns {Promise} Promesse qui se résout avec 'sauce-prete'. Rejette si aucun type n'est fourni. */ preparerSauce(typeSauce) { return new Promise((resolve, reject) => { console.log(` - Préparation de la sauce ${typeSauce}...`); // TODO : compléter comme l'exemple ci-dessus. Gérer le cas où typeSauce est vide ou null en rejetant la promesse avec une erreur. // ... votre code ici ... }); }, /** * Simule la cuisson des pâtes. * @param {string} typePates - Le type de pâtes à cuire. * @returns {Promise} Promesse qui se résout avec 'pates-cuites'. */ cuirePates(typePates) { return new Promise((resolve) => { console.log(` - Cuisson des ${typePates}...`); // TODO : compléter comme l'exemple chaufferEau ci-dessus. // ... votre code ici ... }); }, /** * Simule le mélange final et le service. * @param {string} typePates - Le type de pâtes. * @param {string} typeSauce - Le type de sauce. * @returns {Promise} Promesse qui se résout avec le plat final. */ melangerEtServir(typePates, typeSauce) { return new Promise((resolve) => { console.log(" - Mélange des pâtes et de la sauce..."); // TODO : compléter comme l'exemple chaufferEau ci-dessus. // ... votre code ici ... }); } };