როდესაც ჩვენ შევისწავლეთ ჯავასკრიპტის DOM ჩვენ აქტიურად ვიყენებდით ე.წ. ივენთებს (events) როგორებიცაა მაგალითად: მაუსის კლიკი (click
) რომლის დახმარებითაც ვცდილობდით კონკრეტული ელემენტის კლიკზე კონკრეტული ფუნქციონალის შესრულებას.
nodejs-ის მხარეს ჩვენ ასევე გვაქვს მსგავსი event-ების კლასი რომელიც შესულია ნოუდის events მოდულში.
მოცემულ გაკვეთილში შევისწავლით თუ როგორი პრინციპით მუშაობს EventEmitter
კლასი node-ის აპლიკაციაში.
მაგალითი:
const EventEmitter = require('node:events');
const eventEmitter = new EventEmitter();
განვიხილოთ მაგალითი. მაგალითში პირველ რიგში ვაიმპორტებთ EventEmitter
კლასს, რასაც ვაკეთებთ ე.წ. პასკალ ქეის შეთანხმებით.
ხოლო შემდგომ ცვლადში სახელად eventEmitter
ვახდენთ EventEmitter
-კლასის ინიციალიზაციას, რაც საშუალებას გვაძლევს გამოვიყენოთ მისი ყველა მეთოდი.
მიუხედავად EventEmitter
კლასში არსებული მრავალი მეთოდისა ჩვენ ძირითად შემთხვევაში გამოვიყენებთ emit და on მეთოდებს.
emit
მეთოდით ხდება event-ის დაწყებაon
მეთოდი გავძლევს საშუალებას მოვუსმინოთ კონკრეტულ event-ს callback ფუნქციის დახმარებითმაგალითისთვის შევქმნათ event სახელად start რომელიც კონსოლში დაბეჭდავს started ტექსტს.
მაგალითი:
eventEmitter.on('start', () => {
console.log('started');
});
მიუხედავად იმისა, რომ ჩვენ წარმატებით შევქმენით event სახელად start კოდის გაშვებისას კონსოლში არაფერი დაიბეჭდება მანამ სანამ არ მოვახდენთ მოცემული event-ის გაშვებას, რომელიც emit მეთოდის დახმარებით უნდა მოვახდინოთ.
მაგალითი:
eventEmitter.emit('start');
მოცემული კოდი მოახდენს start event-ის გაშვებას, შესაბამისად შესრულდება callback-ში არსებული კოდი და დაიბეჭდება started ტექსტი.
eventEmitter
ასევე გვაძლევს საშუალებას emit
მეთოდის დახმარებით ასევე გავგზავნოთ სასურველი არგუმენტები, რომელიც ხელმისაწვდომი გახდება callback ფუნქციაშ პარამეტრების სახით.
მაგალითი:
eventEmitter.on('start', number => {
console.log(`started ${number}`);
});
eventEmitter.emit('start', 23);
მრავალ არგუმენტიანი მაგალითი:
eventEmitter.on('start', (start, end) => {
console.log(`started from ${start} to ${end}`);
});
eventEmitter.emit('start', 1, 100);
EventEmitter კლასი ასევე გვთავაზობს სხვადასხვა მეთოდებს.
once()
: ამატებს ერთჯერად listener-სremoveListener() / off()
: აშორებს event listener-ს event-დანremoveAllListeners()
: აშორებს ყველა listener-ს event-დანმოცემული მაგალითები მოყვანილია nodejs-ის ოფიციალური დოკუმენტაციიდან, იმისთვის, რომ ვრცლად გაარჩიოთ EventEmitter
კლასი გირჩევთ გაეცნოთ დოკუმენტაციას
შეისწავლეთ ვებდეველოპმენტის ენები სრულიად უფასოდ, ისეთები როგორებიცაა Javascript, HTML, CSS და კიდევ სხვა მრავალი ენა
ქვემოთ მოცემულია უახლესი 3 ბლოგი პროგრამირების თემატიკასთან დაკავშირებით