Node.js में घटनाओं की महत्वपूर्ण अवधारणाएँ
कंप्यूटर पर प्रत्येक क्रिया एक घटना है, जैसे जब कोई कनेक्शन बनाया जाता है या कोई फ़ाइल खोली जाती है।
Node.js , readStream :
उदाहरण
let fs = require('fs');
let rs = fs.createReadStream('./demofile.txt');
rs.on('open', function () {
console.log('The file is open');
});
Node.js में इवेंट के साथ शुरुआत करना
Node.js - , "" , ("") .
एक बुनियादी उदाहरण
// Import the events module
const EventEmitter = require('events');
// Create an event emitter instance
const myEmitter = new EventEmitter();
// Register an event listener
myEmitter.on('greet', () => {
console.log('Hello there!');
});
// Emit the event
myEmitter.emit('greet'); // Outputs: Hello there!
इवेंटएमिटर क्लास
इवेंटएमिटर क्लास Node.js के इवेंट-संचालित आर्किटेक्चर के लिए मौलिक है।
यह कस्टम ईवेंट बनाने और प्रबंधित करने की क्षमता प्रदान करता है।
एक ईवेंट एमिटर बनाना
इवेंटएमिटर का उपयोग करने के लिए, आपको इसका एक उदाहरण बनाना होगा:
let events = require('events');
let eventEmitter = new events.EventEmitter();
इवेंटएमिटर ऑब्जेक्ट
आप इवेंटएमिटर ऑब्जेक्ट के साथ अपने स्वयं के इवेंट के लिए इवेंट हैंडलर असाइन कर सकते हैं।
नीचे दिए गए उदाहरण में, हमने एक फ़ंक्शन बनाया है जिसे "चीख" इवेंट ट्रिगर होने पर निष्पादित किया जाएगा।
किसी ईवेंट को फ़ायर करने के लिए, एमिट() विधि का उपयोग करें।
उदाहरण
let events = require('events');
let eventEmitter = new events.EventEmitter();
//Create an event handler:
let myEventHandler = function () {
console.log('I hear a scream!');
}
//Assign the event handler to an event:
eventEmitter.on('scream', myEventHandler);
//Fire the 'scream' event:
eventEmitter.emit('scream');
जेनेरिक इवेंटएमिटर विधियाँ
1. इवेंट हैंडलर्स को तर्क पारित करना
const EventEmitter = require('events');
const emitter = new EventEmitter();
// Emit event with arguments
emitter.on('userJoined', (username, userId) => {
console.log(`${username} (${userId}) has joined the chat`);
});
emitter.emit('userJoined', 'JohnDoe', 42);
// Outputs: JohnDoe (42) has joined the chat
2. घटनाओं को केवल एक ही तरीके से संभालना
const EventEmitter = require('events');
const emitter = new EventEmitter();
// This listener will be called only once
emitter.once('connection', () => {
console.log('First connection established');
});
emitter.emit('connection'); // This will trigger the listener
emitter.emit('connection'); // This won't trigger the listener again
3. त्रुटि प्रबंधन
const EventEmitter = require('events');
const emitter = new EventEmitter();
// Always handle 'error' events
emitter.on('error', (err) => {
console.error('An error occurred:', err.message);
});
// This will trigger the error handler
emitter.emit('error', new Error('Something went wrong'));
सर्वोत्तम अभ्यास
1. हमेशा त्रुटियों को संभालें
// Good practice: Always listen for 'error' events
myEmitter.on('error', (err) => {
console.error('Error in event emitter:', err);
});
2. बेहतर स्टैक ट्रेस के लिए नामित फ़ंक्शन का उपयोग करें
// Instead of anonymous functions
function handleData(data) {
console.log('Received data:', data);
}
myEmitter.on('data', handleData);
3. श्रोताओं को साफ़ करें
// Add a listener
const listener = () => console.log('Event occurred');
myEmitter.on('event', listener);
// Later, remove the listener when no longer needed
myEmitter.off('event', listener);
इवेंट एमिटर्स के लिए हेल्पनोट्स:
- 'त्रुटि' घटनाओं को संभालते समय
- बेहतर डिबगिंग के लिए नामित फ़ंक्शन का उपयोग करें
- मेमोरी लीक से बचने के लिए श्रोताओं को हटा दें
- ईवेंट नामों के लिए सुसंगत नामकरण परंपराओं का उपयोग करें