我理解CommonJS模块在加载时会实际阻塞。
在某些情况下,我希望做一些特殊的工作 - 为我的应用服务器加载和解析配置文件 - 以阻塞的方式,即,因为应用程序在加载这些文件之前不可用,只有在那些异步操作是完成。
我可以延迟导出直到CommonJS中的异步操作吗?或者我应该只使用同步文件读取/解析方法?
答案 0 :(得分:0)
您可以使用回调作为参数导出函数:
var fs = require('fs');
function parseContent(content) {
// do the content parsing
}
exports.getFileData = function (callback) {
fs.readFile('path/to/file', function (error, content) {
var data;
if (error) {
throw error;
} else {
data = parseContent(content);
callback(data);
}
});
};
用法:
moduleName.getFileData(function (data) {
// process data
});