メソッドの説明:
イベント イベントを発行し、いくつかのオプションのパラメーターをイベント リスナーのパラメーター リストに渡します。
文法:
emitter.emit(event, [arg1], [arg2], [...])
パラメータを受信します:
event イベントの種類
arg1 ~ argN 渡されるパラメータ (複数)
例:
var events = require('events');
var エミッター = 新しいイベント.EventEmitter();
エミッター.on('someEvent', function(arg1, arg2){
console.log('listener1', arg1, arg2);
})
エミッター.on('someEvent', function(arg1, arg2){
console.log('listener2', arg1, arg2);
})
エミッター.emit('someEvent', 'byvoid', 1991);
ソースコード:
EventEmitter.prototype.emit = function(type) {
var er、ハンドラー、len、args、i、リスナー;
if (!this._events)
this._events = {};
// 'error' イベント リスナーがない場合はスローします。
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('捕捉されていない、特定されていない「エラー」イベント。');
er.domainEmitter = this;
er.domain = this.domain;
er.domainThrown = false;
this.domain.emit('error', er);
else if (エラーのインスタンス) {
ええと投げます。 // 未処理の「エラー」イベント
} else {
throw TypeError('捕捉されていない、特定されていない「エラー」イベント。');
}
false を返します;
}
}
ハンドラー = this._events[タイプ];
if (util.isUnknown(handler))
false を返します;
if (this.domain && this !== プロセス)
this.domain.enter();
if (util.isFunction(handler)) {
switch (arguments.length) {
// 速いケース
ケース 1:
handler.call(this);
休憩;
ケース 2:
handler.call(this, argument[1]);
休憩;
ケース 3:
handler.call(this, argument[1], argument[2]);
休憩;
// 遅い
デフォルト:
len = 引数.長さ;
args = 新しい配列(len - 1);
for (i = 1; i
args[i - 1] = 引数[i];
handler.apply(this, args);
}
else if (util.isObject(handler)) {
len = 引数.長さ;
args = 新しい配列(len - 1);
for (i = 1; i
args[i - 1] = 引数[i];
リスナー = handler.slice();
len = リスナー.長さ;
for (i = 0; i
listeners[i].apply(this, args);
}
if (this.domain && this !== プロセス)
this.domain.exit();
true を返します;
};