برنامه نویسی با nodejs/جلسه هشتم/ Node.js Events

سلام دوستان , تو این جلسه میخایم با Events اشنا بشیم و روش استفاده ازش رو یاد بگیریم.

اصلا Events چیه؟

اگر بخایم Events رو ترجمه کنیم میشه "رویداد" و در واقع هر عمل و اتفاقی که تو کامپیوتر اتفاق میفته یک رویداد محسوب میشه.

برای مثال وقتی یک connection صورت میگیره یا مثلا وقتی یک فایل باز میشه.

آبجکت ها میتونند باعث وقوع یک رویداد بشن , یعنی چی؟

یعنی مثلا آبجکت readStream وقتی یک فایل رو باز میکنه باعث میشه تا رویداد "باز شدن فایل" رخ بده.

به مثال زیر توجه کنید:

var fs = require('fs');
var rs = fs.createReadStream('./demofile.txt');
rs.on('open', function () {
  console.log('The file is open');
});


ماژول Events

نود در داخل خودش یک ماژول درونی به اسم " Events " داره که هر جایی که خواستید یک event یا همون رویداد بسازید ( create a events ), یا به یک رویدادی گوش بدید( listen to events ) میتونید از این ماژول استفاده کنید, برای استفاده هم کافیه اون رو require کنید , دقت کنید که تمام Property ها و متدهای مورد استفاده در events یک نمونه یا instance از آبجکت EventEmitter هستند پس برای استفاده باید به صورت زیر عمل کنید:

var events = require('events');
var eventEmitter = new events.EventEmitter();





چه نیازی به Events داریم؟

شاید این سوال به ذهنتون اومده باشه و بگید که چه نیازی به استفاده از events هست؟

بزارید یه مثال ساده بزنم تا متوجه بشید.

فرض کنید شما داخل برنامه تون از دیتابیس استفاده میکنید و میخاید وقتی که ارتباط با دیتابیس با موفقیت برقرار شد یک پیامی رو چاپ کنید, اینجاست که میتونید از events کمک بگیرید!
دقت کنید استفاده از events به همچین چیز ساده ای محدود نمیشه و کاربردهای خیلی مهم تری داره که در ادامه باهاش آشنا میشید و این مثال صرفا جهت آشنایی شما بود.

آبجکت EventEmitter

شما میتونید با استفاده از آبجکت EventEmitter رویدادهای شخصی خودتون رو بسازید و ازشون استفاده کنید.

در مثال زیر ما یک تابع به نام " myEventHandler " درست کردیم.

وقتی که رویداد " scream " به وقوع می پیونده این تابع اجرا میشه.

این به وقوع پیوستن رو به اصطلاح میگن fire شدن

در خط آخر هم اومدیم و رویداد خودمون رو fire کردیم:

 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'); 



امیدوارم از این آموزش هم لذت برده باشید

منبع: www.w3schools.com