gpt4 book ai didi

javascript - 如何将实例绑定(bind)到反转容器

转载 作者:行者123 更新时间:2023-12-05 05:00:03 24 4
gpt4 key购买 nike

我正在使用 inversifyinversify-express-utils

我有一个非常普通的inversify/express设置。

  • Controller
    • 服务
      • 一个模块
        • B模块

B 模块 是一个如下所示的类:

import { injectable } from 'inversify';
import SpellCorrector from 'spelling-corrector';

@injectable()
export class SpellCorrectorFactory {
private corrector: any;

constructor() {
this.corrector = new SpellCorrector();
this.corrector.loadDictionary();
}

public correct = (text: string): string => this.corrector.correct(text);
}

现在,这里的问题是,正如您在构造函数中看到的那样,我有这行代码:

this.corrector.loadDictionary()

这行需要一秒钟的时间来执行。所以基本上当我 @inject service B to service A 时,实际的实例创建似乎正在发生所以每次我发出请求时,SpellCorrectorFactory 的构造函数都会被执行,所以请求需要超过 1000 毫秒而不是低于 100 毫秒。

我如何绑定(bind)这个类来反转,以便在绑定(bind)期间类被实例化并且在 A module 中我可以访问在应用程序启动时创建的实例,而不是在我发送时对快速路径的请求?

提前致谢!

最佳答案

好的,以防万一有人查看此页面以寻找答案。

解决方案很简单:

container
.bind<SpellCorrectorFactory>(TYPES.SpellCorrector)
.to(SpellCorrectorFactory)
.inSingletonScope();

这会立即调用 SpellCorrectorFactory 的构造函数并返回实例。因此,无论何时注入(inject)此绑定(bind)的结果,您都可以直接访问实例及其函数。

关于javascript - 如何将实例绑定(bind)到反转容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63292761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com