وصف الطريقة:
تنبعث من الحدث ، ويمر عدة معلمات اختيارية إلى جدول المعلمة لمستمع الحدث.
القواعد:
نسخة الكود كما يلي:
Emitter.emit (الحدث ، [Arg1] ، [Arg2] ، [...])
تلقي المعلمات:
نوع الحدث
تم تمرير المعلمات Arg1 ~ argn (متعددة)
مثال:
نسخة الكود كما يلي:
var events = require ("الأحداث") ؛
var emitter = events.eventemitter () ؛
Emitter.on ('SomeEvent' ، function (arg1 ، arg2) {
console.log ('leader1' ، arg1 ، arg2) ؛
})
Emitter.on ('SomeEvent' ، function (arg1 ، arg2) {
console.log ('leader2' ، arg1 ، arg2) ؛
})
Emitter.emit ('SomeEvent' ، 'Byvoid' ، 1991) ؛
رمز المصدر:
نسخة الكود كما يلي:
eventemitter.prototype.emit = function (type) {
var er ، handler ، len ، args ، i ، المستمعين ؛
إذا (! this._events)
this._events = {} ؛
// إذا لم يكن هناك مستمع حدث "خطأ" ، فقم برمي.
إذا (اكتب === 'خطأ') {
if (! this._events.error ||
(util.isobject (this._events.error) &&! this._events.error.length)) {
ER = الحجج [1] ؛
إذا (this.domain) {
if (! er) er = new typeerror ('حدث "خطأ" غير محدد. ") ؛
er.domainemitter = هذا ؛
er.domain = this.domain ؛
er.domainthrown = false ؛
this.domain.emit ('error' ، er) ؛
} آخر إذا (er eastyof error) {
رمي إيه. // حدث "خطأ" غير معتمد
} آخر {
رمي typeerror ("خطأ غير محدد ، غير محدد" خطأ ".") ؛
}
العودة كاذبة
}
}
معالج = this._events [type] ؛
if (util.iSunded (معالج))
العودة كاذبة
إذا (this.domain && this! == العملية)
this.domain.enter () ؛
if (util.ispunction (معالج)) {
التبديل (الوسائط. الطول) {
// الحالات السريعة
الحالة 1:
Handler.Call (هذا) ؛
استراحة؛
الحالة 2:
Handler.Call (هذا ، الحجج [1]) ؛
استراحة؛
الحالة 3:
Handler.Call (هذا ، الحجج [1] ، الحجج [2]) ؛
استراحة؛
// أبطأ
تقصير:
len = الحجج. الطول ؛
args = صفيف جديد (len - 1) ؛
لـ (i = 1 ؛ i <len ؛ i ++)
args [i - 1] = الحجج [i] ؛
Handler.Apply (هذا ، args) ؛
}
} آخر إذا (util.isobject (معالج)) {
len = الحجج. الطول ؛
args = صفيف جديد (len - 1) ؛
لـ (i = 1 ؛ i <len ؛ i ++)
args [i - 1] = الحجج [i] ؛
المستمعين = معالج. slice () ؛
len = المستمعين.
لـ (i = 0 ؛ i <len ؛ i ++)
المستمعين [i] .apply (هذا ، args) ؛
}
إذا (this.domain && this! == العملية)
this.domain.exit () ؛
العودة صحيح.
} ؛