82 lines
3.0 KiB
JavaScript
82 lines
3.0 KiB
JavaScript
// ===================================================================
|
|
// 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<string>} 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<string>} 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<string>} 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<string>} 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 ...
|
|
});
|
|
}
|
|
};
|