Penerangan kaedah:
Pancarkan acara acara dan hantar beberapa parameter pilihan kepada senarai parameter pendengar acara.
Tatabahasa:
emitter.emit(event, [arg1], [arg2], [...])
Terima parameter:
Jenis acara acara
arg1 ~ argN Lulus parameter (berbilang)
Contoh:
var peristiwa = memerlukan('acara');
var pemancar = peristiwa baharu.EventEmitter();
emitter.on('someEvent', function(arg1, arg2){
console.log('pendengar1', arg1, arg2);
})
emitter.on('someEvent', function(arg1, arg2){
console.log('pendengar2', arg1, arg2);
})
emitter.emit('someEvent', 'byvoid', 1991);
Kod sumber:
EventEmitter.prototype.emit = function(type) {
var er, pengendali, len, args, i, pendengar;
jika (!ini._acara)
this._events = {};
// Jika tiada pendengar acara 'error' maka buang.
jika (taip === 'ralat') {
jika (!this._events.error ||
(util.isObject(this._events.error) && !this._events.error.length)) {
er = hujah[1];
jika (domain.ini) {
if (!er) er = new TypeError('Tidak ditangkap, peristiwa "ralat" tidak ditentukan.');
er.domainEmitter = ini;
er.domain = this.domain;
er.domainThrown = palsu;
this.domain.emit('error', er);
} lain jika (er instanceof Ralat) {
buang er; // Acara 'ralat' tidak dikendalikan
} lain {
throw TypeError('Acara "ralat" tidak ditangkap, tidak ditentukan.');
}
pulangkan palsu;
}
}
pengendali = ini._events[type];
jika (util.isUndefined(pengendali))
pulangkan palsu;
jika (domain.ini && ini !== proses)
this.domain.enter();
jika (util.isFunction(pengendali)) {
suis (arguments.length) {
// kes cepat
kes 1:
handler.call(this);
rehat;
kes 2:
handler.call(this, arguments[1]);
rehat;
kes 3:
handler.call(ini, hujah[1], hujah[2]);
rehat;
// lebih perlahan
lalai:
len = hujah.panjang;
args = Array baharu(len - 1);
untuk (i = 1; i < len; i )
args[i - 1] = hujah[i];
handler.apply(this, args);
}
} else if (util.isObject(handler)) {
len = hujah.panjang;
args = Array baharu(len - 1);
untuk (i = 1; i < len; i )
args[i - 1] = hujah[i];
pendengar = handler.slice();
len = pendengar.panjang;
untuk (i = 0; i < len; i )
pendengar[i].apply(this, args);
}
jika (domain.ini && ini !== proses)
this.domain.exit();
kembali benar;
};