Correction Exercice : "Système de Notification de Commande"
Conditions d’achèvement
Partie 1: Correction de la Création de l'EventEmitter
Assurez-vous que l'instance de EventEmitter est correctement créée :
const EventEmitter = require('events');
class OrderSystem extends EventEmitter {
constructor() {
super();
}
}
Partie 2: Correction de l'Écoute et de l'Émission d'Événements
Vérifiez que les écouteurs sont bien ajoutés et que les événements sont émis correctement :
const orderSystem = new OrderSystem();
orderSystem.on('orderPlaced', () => {
console.log('Une commande a été passée.');
});
orderSystem.on('orderShipped', () => {
console.log('Une commande a été expédiée.');
});
orderSystem.emit('orderPlaced');
orderSystem.emit('orderShipped');
Partie 3: Correction de la Gestion des Événements avec Arguments
Modifiez les écouteurs pour accepter des arguments et émettez des événements avec des données :
orderSystem.on('orderPlaced', (order) => {
console.log(`Commande ${order.id} passée par ${order.customer}.`);
});
orderSystem.on('orderShipped', (order) => {
console.log(`Commande ${order.id} expédiée à ${order.address}.`);
});
orderSystem.emit('orderPlaced', { id: '1234', customer: 'John Doe' });
orderSystem.emit('orderShipped', { id: '1234', address: '123 Main St' });
Partie 4: Correction du Nettoyage des Écouteurs
Implémentez le nettoyage des écouteurs pour éviter les fuites de mémoire :
orderSystem.on('orderCompleted', (orderId) => {
console.log(`Nettoyage des écouteurs pour la commande ${orderId}.`);
orderSystem.removeAllListeners(orderId);
});
// Simuler la complétion d'une commande
orderSystem.emit('orderCompleted', '1234');
Vérification Finale
- Exécutez le script avec Node.js pour vous assurer qu'il n'y a pas d'erreurs de syntaxe ou d'exécution.
- Testez avec différentes commandes pour vous assurer que les écouteurs reçoivent et affichent correctement les données de commande.
- Vérifiez que l'événement
orderCompletedsupprime bien les écouteurs associés à une commande spécifique.
Modifié le: vendredi 3 novembre 2023, 09:40