Events moduli
Node.js-dagi voqealarning asosiy tushunchalari
Kompyuterdagi har bir harakat, masalan, ulanish yoki fayl ochilganda sodir bo‘ladigan hodisadir.
Node.js’dagi obyektlar hodisalarni yoqishi mumkin, masalan, readStream obyekti faylni ochish va yopishda hodisalarni ishga tushirish:
Misol
let fs = require('fs');
let rs = fs.createReadStream('./demofile.txt');
rs.on('open', function () {
console.log('The file is open');
});
Misolni ishga tushirish »
Node.js da Voqealar bilan ishlashni boshlash
Node.js hodisaga asoslangan arxitekturadan foydalanadi, bunda "emitentlar" deb nomlangan obyektlar funksiya obyektlari ("tinglovchilar") chaqirilishiga olib keladigan nomli hodisalarni chiqaradi.
Asosiy misol
// 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!
Misolni ishga tushirish »
EventEmitter klassi
EventEmitter klassi Node.js ning voqealarga asoslangan arxitekturasi uchun asosiy hisoblanadi.
U maxsus hodisalarni yaratish va boshqarish imkoniyatini beradi.
Voqea emitentini yaratish
EventEmitter-dan foydalanish uchun siz uning namunasini yaratishingiz kerak:
let events = require('events');
let eventEmitter = new events.EventEmitter();
EventEmitter obyekti
EventEmitter obyekti yordamida o‘z voqealaringizga hodisa ishlov beruvchilarini belgilashingiz mumkin.
Quyidagi misolda biz "qichqiriq" hodisasi ishga tushirilganda bajariladigan funksiya yaratdik.
Hodisani yoqish uchun emit() usulidan foydalaning.
Misol
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');
Misolni ishga tushirish »
Umumiy EventEmitter naqshlari
1. Argumentlarni voqea ishlovchilarga uzatish
Misol
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
Misolni ishga tushirish »
2. Voqealarni faqat bir marta boshqarish
Misol
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
Misolni ishga tushirish »
3. Xatolarni boshqarish
Misol
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'));
Misolni ishga tushirish »
Eng yaxshi amaliyotlar
1. Har doim xatolar bilan shug‘ullaning
// Good practice: Always listen for 'error' events
myEmitter.on('error', (err) => {
console.error('Error in event emitter:', err);
});
2. Yaxshiroq stack izlari uchun nomlangan funksiyalardan foydalaning
// Instead of anonymous functions
function handleData(data) {
console.log('Received data:', data);
}
myEmitter.on('data', handleData);
3. Tinglovchilarni tozalash
// 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);
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
