如何异步输出模块中的NodeJS
我无法导出我自己写的异步方式的模块。
const glob = require('glob');
var confFiles;
glob("conf/**/*.conf", function (er, files) {
confFiles = files;
});
module.exports = new Promise(function(resolve, reject) {
resolve(confFiles);
});
这是模块本身,我想在其他文件访问confFiles
但问题是,水珠不是异步,我无法找到我的方式来解决这个问题。
我导出load
方法代替:
// conf.js
const glob = require('glob')
module.exports.load = () => new Promise((resolve, reject) => {
glob('conf/**/*.conf', function (err, files) {
if (err) return reject(err)
resolve(files)
})
})
然后在用户态:
// index.js
const conf = require('./conf.js')
conf.load()
.then(files => {
console.log(files)
})
或者,你可以只使用globe.sync
代替,避免处理完全异步代码:
// conf.js
const glob = require('glob')
module.exports = glob.sync('conf/**/*.conf')
然后在用户态:
// index.js
const files = require('./conf.js')
console.log(files)
只要记住,globe.sync
是blocking操作。