【发布时间】:2015-09-06 22:07:59
【问题描述】:
在我的 main.js 中,我正在异步读取文件。加载文件后,我在 GLOBAL 命名空间中设置一些对象并在我的 required 模块中使用它们(是否使用 GLOBAL 命名空间是另一回事,无论如何我都在使用它)。
我的required 模块立即期望该变量在加载时存在。那么如何让它等到 main.js 中的文件读取完成?我只是在readFile 的回调中需要模块吗?还是有更好的方法?
示例:
fs.readFile('./file', function (data) {
// do something
GLOBAL.obj = data;
});
require('./module.js');
模块.js
obj.someFunction();
【问题讨论】:
-
仅供参考,这是一个糟糕的设计模式。如果一个模块需要一些外部状态,那么该模块应该公开一个构造函数,并且当状态可用时你应该调用该构造函数。然后,您可以随时
require()模块,并在您拥有该状态时通过调用构造函数(并将该状态传递给构造函数)来完成对其的初始化。 -
太棒了!我期待这样的建议。我不是很高兴
requireing 这样的模块。谢谢,我会遵循这个模式。
标签: javascript node.js node-modules