emitter.on()
الاستماع لحدث emitter.on()
emitter.on() تسجّل دالة استماع (listener) تُستدعى في كل مرة يُطلَق فيها الحدث المحدَّد بنفس اسم eventName.
emitter.on(eventName, listener) تضيف الدالة listener لقائمة المستمعين على الحدث eventName. لا يوجد تحقّق من التكرار — استدعاء on بنفس الدالة أكثر من مرة يسجّلها أكثر من مرة، فتُستدعى عدة مرات عند كل emit. المستمعون يُستدعَون بترتيب تسجيلهم.
تُرجع on مرجع الـ emitter نفسه، ما يسمح بربط عدة استدعاءات on متتالية (method chaining).
الصياغة
emitter.on(eventName, listener)
📄 مثال
const { EventEmitter } = require('node:events');
const bus = new EventEmitter();
bus.on('order', (id) => {
console.log(`طلب جديد رقم ${id}`);
});
bus.on('order', (id) => {
console.log(`إرسال إشعار للطلب ${id}`);
});
bus.emit('order', 101);
// ينفّذ المستمعَين بالترتيب اللي سُجّلا فيهأهم المعاملات
| المعامل | الوظيفة |
|---|---|
| eventName | اسم الحدث — نص أو Symbol |
| listener | الدالة التي تُستدعى عند إطلاق الحدث |
💡 نصائح عملية
- emit تستدعي كل المستمعين بترتيب تسجيلهم بشكل متزامن (synchronous) وليس بالتوازي
- استخدم once() بدل on() لو تريد الاستماع مرة واحدة فقط ثم إزالة المستمع تلقائيًا
⚠️ أخطاء شائعة
- تسجيل نفس الدالة أكثر من مرة على نفس الحدث دون قصد يجعلها تُستدعى عدة مرات — on لا تتحقق من التكرار
- الاعتماد على أن المستمعين يُستدعَون بالتوازي — هم يُستدعَون بالترتيب وبشكل متزامن، فمستمع بطيء يؤخّر التالي
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار NODEJS الكامل بالعربي.