我使用的第三方模块( a spell-checker )初始化过程较长,初始化完成后会调用回调。
我需要在应用程序的几个不同文件(子模块)中使用此模块。
在每个子模块中初始化不同的拼写检查器看起来浪费时间和空间,因此我正在寻找一种方法来初始化单个拼写检查器并在所有模块中使用它。
我想到的一个选择是将拼写检查器实例放入子模块中,在子模块中初始化它,并从其他子模块中需要该子模块。但是,我不知道如何处理初始化回调 - 如何确保我的其他子模块在初始化之前不会使用拼写检查器实例?
我想到的另一个选择是创建一个带有拼写检查器的单独应用程序,并通过 TCP/IP 或其他机制从我的应用程序联系它。但这看起来也很浪费——太多的通信开销。
有更好的方法吗?
最佳答案
这类似于使用数据库驱动程序库并在发出查询之前等待它成功连接到数据库。最流行的模式似乎是异步库发出“已连接”等事件,并且调用代码在该事件触发之前才开始与库交互。另一种选择是遵循 Mongoose 和队列弯曲调用之类的示例,直到拼写检查器初始化,然后开始提交它们进行处理。
因此,简而言之,我会将拼写检查包装在一个直接导出拼写检查器的小库中,但当底层拼写检查器库调用初始化回调时,也会发出“就绪”事件。应该可以在整个应用程序中共享包装器模块的同一实例。
关于node.js - 具有初始化回调的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394830/