Exercice : "Service de Conversion de Devises"
Conditions d’achèvement
Exercice : "Service de Conversion de Devises"
Objectif : Créer un script Node.js qui simule un service de conversion de devises en utilisant des opérations asynchrones. L'exercice mettra en évidence la gestion des callbacks, l'utilisation des promesses, l'implémentation d'async/await et la gestion des erreurs asynchrones.
Partie 1: Callbacks et Gestion des Erreurs
- Fonction de Conversion avec Callback :
- Écrivez une fonction
convertCurrency(amount, fromCurrency, toCurrency, callback)qui simule une opération asynchrone pour convertir une somme d'argent d'une devise à une autre. - Utilisez
setTimeoutpour simuler le délai de l'opération asynchrone. - Gérez les erreurs en appelant le callback avec un objet d'erreur comme premier argument si la conversion ne peut pas être effectuée (par exemple, si les devises fournies ne sont pas supportées).
- Écrivez une fonction
Partie 2: Promesses et Async/Await
-
Refactorisation avec Promesses :
- Refactorisez
convertCurrencypour retourner une promesse au lieu d'utiliser un callback. - Gérez les erreurs en rejetant la promesse avec un message d'erreur approprié.
- Refactorisez
-
Utilisation d'Async/Await :
- Créez une fonction asynchrone
performConversionqui utiliseawaitpour attendre la conversion de devise et log le résultat. - Utilisez un bloc try-catch pour gérer les erreurs de la promesse.
- Créez une fonction asynchrone
Partie 3: Gestion des Erreurs Asynchrones
- Gestion des Erreurs avec Async/Await :
- Dans la fonction
performConversion, assurez-vous que toutes les erreurs potentielles sont capturées et loggées correctement. - Testez différents scénarios, y compris des cas où la conversion devrait réussir et échouer.
- Dans la fonction
Exemple de Code pour la Partie 1
function convertCurrency(amount, fromCurrency, toCurrency, callback) {
const supportedCurrencies = ['USD', 'EUR', 'GBP'];
setTimeout(() => {
if (!supportedCurrencies.includes(fromCurrency) || !supportedCurrencies.includes(toCurrency)) {
callback(new Error('Unsupported currency'));
} else {
// Simuler un taux de conversion
const rate = 0.9; // taux fictif pour l'exemple
const convertedAmount = amount * rate;
callback(null, convertedAmount);
}
}, 1000);
}
// Utilisation de la fonction avec un callback
convertCurrency(100, 'USD', 'EUR', (err, result) => {
if (err) {
console.error(err.message);
} else {
console.log(`Converted amount: ${result}`);
}
});
Instructions pour l'étudiant :
- Complétez la fonction
convertCurrencypour qu'elle gère correctement les devises non supportées. - Refactorisez la fonction pour utiliser des promesses et implémentez
performConversionen utilisant async/await. - Assurez-vous de gérer toutes les erreurs potentielles dans
performConversion. - Testez votre code avec différents montants et devises pour vous assurer qu'il gère correctement les cas de succès et d'échec.
Cet exercice aidera les étudiants à comprendre les différentes façons de gérer l'asynchronicité en Node.js et l'importance de la gestion des erreurs dans les opérations asynchrones.
Modifié le: vendredi 3 novembre 2023, 09:31