メソッド説明:
エミットイベント、いくつかのオプションのパラメーターをイベントリスナーのパラメーターテーブルに渡します。
文法:
コードコピーは次のとおりです。
emitter.emit(event、[arg1]、[arg2]、[...])
パラメーターを受信:
イベントイベントタイプ
Arg1〜Argnパラメーターが渡された(複数)
例:
コードコピーは次のとおりです。
var events = require( 'events');
var emitter = new Events.eventemitter();
Emitter.on( 'SomeEvent'、function(arg1、arg2){
console.log( 'リスナー1'、arg1、arg2);
})
Emitter.on( 'SomeEvent'、function(arg1、arg2){
console.log( 'リスナー2'、arg1、arg2);
})
Emitter.emit( 'SomeEvent'、 'byvoid'、1991);
ソースコード:
コードコピーは次のとおりです。
eventemitter.prototype.emit = function(type){
var er、ハンドラー、レン、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( 'cont、不特定の「エラー」イベント。');
er.domainemitter = this;
er.domain = this.domain;
er.domainthrown = false;
this.domain.emit( 'error'、er);
} else if(er instanceof error){
ERを投げます。 //未処理の「エラー」イベント
} それ以外 {
スロータイプエラー( '猛攻撃、不特定の「エラー」イベント');
}
falseを返します。
}
}
ハンドラー= this._events [type];
if(util.isundefined(handler))
falseを返します。
if(this.domain && this!== process)
this.domain.enter();
if(util.isfunction(handler)){
switch(arguments.length){
//高速ケース
ケース1:
handler.call(this);
壊す;
ケース2:
handler.call(this、arguments [1]);
壊す;
ケース3:
handler.call(this、arguments [1]、arguments [2]);
壊す;
// もっとゆっくり
デフォルト:
len = arguments.length;
args = new Array(len -1);
for(i = 1; i <len; i ++)
args [i -1] = arguments [i];
Handler.Apply(This、args);
}
} else if(util.isobject(handler)){
len = arguments.length;
args = new Array(len -1);
for(i = 1; i <len; i ++)
args [i -1] = arguments [i];
リスナー= handler.slice();
len = listens.length;
for(i = 0; i <len; i ++)
リスナー[i] .apply(this、args);
}
if(this.domain && this!== process)
this.domain.exit();
trueを返します。
};