Метод Описание:
Emit Event, передавая несколько дополнительных параметров в таблицу параметров слушателя события.
Грамматика:
Кода -копия выглядит следующим образом:
Emitter.emit (Event, [arg1], [arg2], [...])
Получить параметры:
Тип события
Арг1 ~ Аргн ПАРАМЕТРЫ ПРОДОЛЖЕНИЕ (Несколько)
пример:
Кода -копия выглядит следующим образом:
var events = require ('events');
var Emitter = new Events.Eventemiter ();
Emitter.on ('someevent', function (arg1, arg2) {
console.log ('Slieder1', arg1, arg2);
})
Emitter.on ('someevent', function (arg1, arg2) {
console.log ('Slieder2', arg1, arg2);
})
Emitter.emit ('SomeEvent', 'Byvoid', 1991);
Исходный код:
Кода -копия выглядит следующим образом:
EventEmitter.prototype.emit = function (type) {
var er, gandler, len, args, i, слушатели;
if (! this._events)
this._events = {};
// Если нет прослушивателя событий «ошибка», то брось.
if (type === 'error') {
if (! this._events.error ||
(util.isobject (this._events.error) &&! this._events.error.length)) {
er = аргументы [1];
if (this.domain) {
if (! er) er = new TypeError ('uncaught, uncespendififified "Erry" Event.');
Er.domainemitter = это;
er.domain = this.domain;
er.domainthrown = false;
this.domain.emit ('error', er);
} else if (er exanceOf error) {
бросить ER; // Событие «ошибка» без ущерба
} еще {
Throw TypeError («Неучтенное, неуточненное« Ошибка ». '););
}
вернуть ложь;
}
}
Handler = this._events [type];
if (util.isundefined (обработчик))
вернуть ложь;
if (this.domain && this! == Процесс)
this.domain.enter ();
if (util.isfunction (handler)) {
Switch (Arguments.length) {
// быстрые случаи
Случай 1:
handler.call (это);
перерыв;
Случай 2:
handler.call (это, аргументы [1]);
перерыв;
Случай 3:
handler.call (это, аргументы [1], аргументы [2]);
перерыв;
// помедленнее
по умолчанию:
len = arguments.length;
args = new Array (Len - 1);
для (i = 1; i <len; i ++)
args [i - 1] = аргументы [i];
handler.apply (это, args);
}
} else if (util.isobject (handler)) {
len = arguments.length;
args = new Array (Len - 1);
для (i = 1; i <len; i ++)
args [i - 1] = аргументы [i];
Слушатели = handler.slice ();
len = слушатели.
для (i = 0; i <len; i ++)
слушатели [i] .apply (это, args);
}
if (this.domain && this! == Процесс)
this.domain.exit ();
вернуть истину;
};