mat*_*ilk 4 javascript express typescript inversifyjs
我正在使用inversify与inversify-express-utils.
我有一个很平常的inversify/express设置。
B module是一个如下所示的类:
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);
}
Run Code Online (Sandbox Code Playgroud)
现在,这里的问题是,正如您在构造函数中看到的,我有这行代码:
this.corrector.loadDictionary()
Run Code Online (Sandbox Code Playgroud)
该行需要一秒钟多的时间来执行。所以基本上看起来实际的实例创建是在我为服务提供服务@inject时发生的
所以每次我发出请求时,都会执行 的构造函数,因此请求需要超过 1000 毫秒而不是低于 100 毫秒。BASpellCorrectorFactory
如何将此类绑定到 inversify,以便在绑定期间实例化该类,并且在A module我可以访问在应用程序启动时创建的实例,而不是在我向快速路径发送请求时?
提前致谢!
好的,以防万一有人查看此页面来寻找答案。
解决方案很简单:
container
.bind<SpellCorrectorFactory>(TYPES.SpellCorrector)
.to(SpellCorrectorFactory)
.inSingletonScope();
Run Code Online (Sandbox Code Playgroud)
这会立即调用构造函数SpellCorrectorFactory并返回实例。因此,每当您注入此绑定的结果时,您都可以直接访问该实例及其函数。
| 归档时间: |
|
| 查看次数: |
7838 次 |
| 最近记录: |