You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript/TypeScript模块级定义的serviceBroker对象生命周期是怎样的

serviceBroker 实例相关问题解答

核心规则前提

你观察到的实例行为由 Node.js/浏览器环境下的模块缓存机制决定,和 TypeScript 语法本身无关,ES 模块、CommonJS 模块都遵循该规则。

问题逐一解答

  • 生命周期与创建时机

    serviceBroker 是模块顶层声明的常量,它的初始化逻辑(new MyBroker())会在 myService.ts 第一次被其他模块导入时执行,实例会在本次模块加载过程中创建完成。
  • 销毁时机

    无手动操作的前提下,该实例会持续持有内存引用,直到整个进程退出时随进程资源一同被系统回收。如果需要提前销毁实例,需要手动解除所有对它的引用:包括将模块层面的关联引用置空,同时确认所有业务代码中没有单独留存该实例的引用,之后实例会在下次垃圾回收执行时被清理。
  • 单进程实例数量

    标准开发场景下,单个进程内该实例全局唯一,只会存在1个。只有两种特殊场景会出现多实例:
    • 手动清空模块缓存后重新导入:比如 CommonJS 环境下执行 delete require.cache[require.resolve('./myService.ts')] 后再次导入该模块,会重新执行模块顶层代码生成新实例
    • 导入路径异常:导入时的路径大小写不一致、通过软链接等不同路径映射到同一个物理文件,导致模块加载器判定为不同模块,也会触发重复加载生成新实例,这类问题多出现于大小写不敏感的操作系统(如 Windows)中。

内容的提问来源于stack exchange,提问作者friartuck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:54:05