مُطلق الأحداث Node.js
إذا كنت قد عملت مع جافا سكريبت في المتصفح، فأنت تعلم كمية التفاعل مع المستخدم التي تتم معالجتها من خلال الأحداث: نقرات الماوس، و الضغط على أزرار لوحة المفاتيح، والاستجابة لحركات الماوس، وما إلى ذلك.
على جانب الخادم، يوفر لنا Node.js خيار إنشاء نظام مشابه باستخدام وحدة الأحداث.
توفر هذه الوحدة، على وجه الخصوص، فئة EventEmitter، والتي سنستخدمها لمعالجة أحداثنا.
تقوم بتهيئة ذلك باستخدام
import EventEmitter from 'node:events'
const eventEmitter = new EventEmitter()
يعرض هذا الكائن، من بين العديد من الكائنات الأخرى، طريقتي on
و emit
.
emit
تُستخدم لتحريك حدثon
تُستخدم لإضافة دالة مُراجعة سيتم تنفيذها عند تحريك الحدث
على سبيل المثال، دعنا ننشئ حدث start
، وكوسيلة لتقديم مثال، نتفاعل مع ذلك فقط عن طريق تسجيل الدخول إلى وحدة التحكم:
eventEmitter.on('start', () => {
console.log('started')
})
عندما نقوم بتشغيل
eventEmitter.emit('start')
يتم تشغيل دالة مُعالجة الحدث، ونحصل على سجل وحدة التحكم.
يمكنك تمرير الوسائط إلى مُعالجة الحدث عن طريق تمريرها كوسائط إضافية إلى emit()
:
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()
: إضافة مُستمع لمرة واحدةremoveListener()
/off()
: إزالة مُستمع حدث من حدثremoveAllListeners()
: إزالة جميع المُستمعين لحدث
يمكنك قراءة المزيد حول هذه الطرق في وثائق وحدة الأحداث.