مشخصات مقاله
آموزش کار با رویدادها (Events) در Node.js
رویدادها در Node.js
Node.js یک چهارچوب ایدهآل برای برنامههای رویدادگرا (event-driven) است. در این سیستم، هر رخداد یا اکشنی که در کامپیوتر اتفاق میافتد، میتواند به عنوان یک رویداد تلقی شود. برای مثال، زمانی که ارتباطی ایجاد میشود یا یک فایل باز میشود، یک رویداد رخ میدهد. در Node.js، اشیاء (objects) میتوانند رویدادها را ایجاد و مدیریت کنند. به عنوان نمونه، شی readStream در هنگام باز یا بسته شدن یک فایل، رویدادهایی را صادر میکند.
مثال عملی : در کد مثال عملی زیر، از ماژول فایل سیستم (fs) در برنامه Node.js استفاده کرده ایم. این ماژول در هنگامی که برنامه فایل “demofile.txt” را توسط متد ()createReadStream باز می کند، پیامی را در سیستم ثبت می کند :
var fs = require('fs');
var rs = fs.createReadStream('./demofile.txt');
rs.on('open', function () {
console.log('The file is open');
});
خروجی کد به صورت زیر خواهد بود :
C:\Users\My Name>node demo_events_open.js The file is open
کار با ماژول Events
Node.js دارای یک ماژول درونساخته به نام Events است که به شما امکان میدهد رویدادهای مورد نظر خود را ایجاد کرده، آنها را فعال کنید و یا به رخ دادن آنها گوش دهید. برای استفاده از این ماژول، باید نام آن را در تابع ()require وارد کرده و سپس یک نمونه از شی EventEmitter ایجاد کنید:
var events = require('events');
var eventEmitter = new events.EventEmitter();
مدیریت رویدادها با EventEmitter در Node.js
با استفاده از شی EventEmitter، میتوانید یک مدیریتکننده رویداد (Event Handler) را به یک رویداد خاص مرتبط کنید. در مثال زیر، تابعی به عنوان مدیریتکننده رویداد ایجاد شده که در هنگام وقوع رویداد scream اجرا خواهد شد. سپس با استفاده از متد ()emit این رویداد را فعال میکنیم:
var events = require('events');
var eventEmitter = new events.EventEmitter();
//Create an event handler:
var 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');
خروجی کد به صورت زیر خواهد بود :
C:\Users\My Name>node demo_eventemitter.js I hear a scream!