commonJS模块是否可以在导出之前阻塞?

时间:2014-08-06 16:05:11

标签: node.js asynchronous commonjs

我理解CommonJS模块在加载时会实际阻塞。

在某些情况下,我希望做一些特殊的工作 - 为我的应用服务器加载和解析配置文件 - 以阻塞的方式,即,因为应用程序在加载这些文件之前不可用,只有在那些异步操作是完成。

我可以延迟导出直到CommonJS中的异步操作吗?或者我应该只使用同步文件读取/解析方法?

1 个答案:

答案 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
});