[英]NodeJS export async variable with module.exports
我在nodejs应用程序中有2个文件:
export.js (逐行读取文件并将其保存到数组中)
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('test.txt')
});
var file_lines = [];
onFinish(function(result) {
module.exports = result;
});
function onFinish(callback){
lineReader.on('line', function (line) {
file_lines.push(line);
}).on('close', function() {
callback(file_lines);
})
};
和app.js (应获取导出的值,以便在此处进行操作)
var a = require("./export");
console.log(a);
如您在export.js中看到的,我使用了一个异步回调,因此它将保存数据,但是我认为我将在app.js文件中需要另一个异步回调。 实现这一目标的最佳方法是什么?
PS我意识到,不需要export.js文件的异步调用。 这是新版本:
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('test.txt')
});
var file_lines = [];
lineReader.on('line', function (line) {
file_lines.push(line);
}).on('close', function() {
module.exports = file_lines;
console.log(file_lines);
})
但是再次,我的问题是,我如何在app.js文件的a变量中获取值?
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('test.txt')
});
var file_lines = [];
module.exports = function onFinish(callback){
lineReader.on('line', function (line) {
file_lines.push(line);
}).on('close', function() {
callback(file_lines);
})
};
接着
var a = require("./export");
a(function(data){ console.log(data) })
除了回调,您还可以导出promise :
var Promise = require('bluebird')
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('test.txt')
});
module.exports = function (user) {
return new Promise(function (resolve, reject) {
var file_lines = [];
lineReader.on('line', function (line) {
file_lines.push(line);
}).on('close', function() {
resolve(file_lines);
})
})
}
然后很好地使用它,如下所示:
read_lines = require('line_reader')
read_lines()
.then(function (lines) {
// lines are already read here
})
要获得Promise,您可以使用npm i bluebird
安装npm i bluebird
您可以导出功能lineReader
并设置onFinish
回调函数,其中console.log
可以写
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.