Deskripsi metode:
Memancarkan acara, meneruskan beberapa parameter opsional ke tabel parameter pendengar acara.
tata bahasa:
Salinan kode adalah sebagai berikut:
emitter.emit (peristiwa, [arg1], [arg2], [...])
Menerima parameter:
Jenis acara acara
Arg1 ~ Parameter Argn Lulus (Multiple)
contoh:
Salinan kode adalah sebagai berikut:
var peristiwa = membutuhkan ('peristiwa');
var emitter = peristiwa baru.eventemitter ();
emitter.on ('someevent', function (arg1, arg2) {
console.log ('listener1', arg1, arg2);
})
emitter.on ('someevent', function (arg1, arg2) {
console.log ('listener2', arg1, arg2);
})
emitter.emit ('someevent', 'Byvoid', 1991);
Kode Sumber:
Salinan kode adalah sebagai berikut:
EventeMitter.Prototype.emit = function (type) {
var er, pawang, len, args, i, pendengar;
if (! this._events)
this._events = {};
// Jika tidak ada pendengar acara 'kesalahan' maka lempar.
if (type === 'error') {
if (! this._events.error ||
(util.isObject (this._events.error) &&! this._events.error.length)) {
er = argumen [1];
if (this.domain) {
if (! er) er = new typeError ('event "tidak ditentukan, tidak ditentukan" ERROR ".');
er.domainemitter = ini;
er.domain = this.domain;
er.domAnthrown = false;
this.domain.emit ('error', er);
} lain jika (er instance of error) {
melempar er; // peristiwa 'kesalahan' yang tidak ditangani
} kalau tidak {
Throw TypeError ('ERROR "tidak ditentukan, tidak ditentukan.');
}
mengembalikan false;
}
}
handler = this._events [type];
if (util.isundefined (handler))
mengembalikan false;
if (this.domain && this! == proses)
this.domain.enter ();
if (util.isfunction (handler)) {
switch (arguments.length) {
// Kasing cepat
Kasus 1:
handler.call (ini);
merusak;
Kasus 2:
handler.call (ini, argumen [1]);
merusak;
Kasus 3:
handler.call (ini, argumen [1], argumen [2]);
merusak;
// lebih lambat
bawaan:
len = argumen.length;
args = array baru (len - 1);
untuk (i = 1; i <len; i ++)
args [i - 1] = argumen [i];
Handler.Apply (ini, args);
}
} lain jika (util.isObject (handler)) {
len = argumen.length;
args = array baru (len - 1);
untuk (i = 1; i <len; i ++)
args [i - 1] = argumen [i];
pendengar = handler.slice ();
len = listeners.length;
untuk (i = 0; i <len; i ++)
pendengar [i] .Apply (ini, args);
}
if (this.domain && this! == proses)
this.domain.exit ();
Kembali Benar;
};