← Cloudflare Workers / workers / runtime-apis / nodejs
EventEmitter
EventEmitter ↗
je objekt, který vyvolává pojmenované události způsobující volání posluchačů.
import { EventEmitter } from "node:events";
const emitter = new EventEmitter();
emitter.on("hello", (...args) => {
console.log(...args); // 1 2 3
});
emitter.emit("hello", 1, 2, 3);Implementace v runtime Workers podporuje celé Node.js EventEmitter API. To zahrnuje captureRejections ↗
možnost, která umožňuje lepší zpracování asynchronních funkcí jako obslužných rutin událostí:
const emitter = new EventEmitter({ captureRejections: true });
emitter.on("hello", async (...args) => {
throw new Error("boom");
});
emitter.on("error", (err) => {
// the async promise rejection is emitted here!
});Stejně jako u Node.js, když 'error' událost se vyvolá na EventEmitter a pokud pro to
neexistuje žádný posluchač, chyba se okamžitě vyhodí. V Node.js
je ale možné přidat obslužnou rutinu na process objekt pro
'uncaughtException' událost pro zachytávání globálně nezachycených výjimek.
'uncaughtException' událost však v současnosti není v runtime Workers implementována. Důrazně
se doporučuje vždy přidat 'error' listener
k jakémukoli EventEmitter instance.
Viz Dokumentace Node.js pro EventEmitter ↗ s dalšími informacemi.