在不导出功能的另一个模块中定义 EventEmitter 处理程序
Defining EventEmitter handler in another module not exporting the functionality
我在一个模块中声明并导出了一个 EventEmitter
实例(比方说 index.ts
),就像这样
class Logger extends EventEmitter {};
/* Logger instance */
export const logger: Logger = new Logger();
在另一个模块中,我导入了这个 logger
实例并定义了一些处理程序。 (handlers.ts
)
logger.on(LOG_TRIGGER, (data: ILogTrigger): void => {
const symbol: string = data.symbol;
const change: number = data.change;
const price: number = data.last_price;
logger.logTrigger(symbol, price, change);
});
但是当我从 index.ts
文件导入外部模块中的记录器实例并发出事件时。它不会被触发。但是,当处理程序和声明都在一个文件中时,它就会被触发。这是怎么回事?
将 class 导出到处理程序模块是一个解决方案,但我的问题是:我们可以导出 class 的实例并在其中定义更多处理程序吗一个单独的模块?
我意识到我在其中定义事件处理程序的模块根本没有被进程访问。将我定义处理程序的外部模块导入到正在初始化事件发射器实例的模块中[或]导入到启动代码的主进程有助于解决这个问题。
import "./external-handler-module.ts"
这使得应用程序进程“可以访问”代码。
我在一个模块中声明并导出了一个 EventEmitter
实例(比方说 index.ts
),就像这样
class Logger extends EventEmitter {};
/* Logger instance */
export const logger: Logger = new Logger();
在另一个模块中,我导入了这个 logger
实例并定义了一些处理程序。 (handlers.ts
)
logger.on(LOG_TRIGGER, (data: ILogTrigger): void => {
const symbol: string = data.symbol;
const change: number = data.change;
const price: number = data.last_price;
logger.logTrigger(symbol, price, change);
});
但是当我从 index.ts
文件导入外部模块中的记录器实例并发出事件时。它不会被触发。但是,当处理程序和声明都在一个文件中时,它就会被触发。这是怎么回事?
将 class 导出到处理程序模块是一个解决方案,但我的问题是:我们可以导出 class 的实例并在其中定义更多处理程序吗一个单独的模块?
我意识到我在其中定义事件处理程序的模块根本没有被进程访问。将我定义处理程序的外部模块导入到正在初始化事件发射器实例的模块中[或]导入到启动代码的主进程有助于解决这个问题。
import "./external-handler-module.ts"
这使得应用程序进程“可以访问”代码。