如何一次性从本地文件初始化数据的节点模块
我试图创建一个具有一些辅助功能,通过我在一个CSV文件中引用数据搜索节点模块。我已经使用了CSV解析器模块加载到对象,这个API似乎是与异步流读取器/管的场合使用。我不想在此模块中的辅助功能是提供给任何其他模块这个参考数据有机会先加载。
我已经使用无极试过,但为了得到它的工作,我不得不揭露这一承诺和初始化函数来调用模块(一个或多个),这是不理想的。
// refdata.js
const fs = require('fs');
const csv = require('csv-parser');
var theData = new Array();
function initRefdata() {
return(new Promise(function(resolve, reject) {
fs.createReadStream('refdata.csv')
.pipe(csv())
.on('data', function(data) {theData.push(data);})
.on('end', resolve);}));
}
function helperFunction1(arg) { ... }
module.exports.initRefdata = initRefdata;
module.exports.helperFunction1 = helperFunction1;
// main.js
var refdata = require('./refdata.js');
function doWork() {
console.log(refdata.helperFunction1('Italy'));
}
refdata.initRefdata().then(doWork);
这适用于这一个使用基准数据模块,但它是令人沮丧的,我不能使用的初始化函数内部完全以refdata.js。当我这样做,我才开始使用的辅助功能,这需要各方面的数据,才可以是有用到流管异步调用是不完整的。另外,我不希望在每次需要时重新加载所有的CSV数据。
回答如下:从@Deepal评论我能够想出:
// refdata.js
const fs = require('fs');
const csv = require('csv-parser');
var theData = new Array();
function initRefdata() {
return(new Promise(function(resolve, reject) {
fs.createReadStream('refdata.csv')
.pipe(csv())
.on('data', function(data) {theData.push(data);})
.on('end', resolve);}));
}
function helperFunction1(arg) {
if (theData.length == 0) {
initRefdata().then(nestedHelper(arg));
}
else {
nestedHelper(arg);
}
function nestedHelper(arg) { ... }
}
module.exports.helperFunction1 = helperFunction1;
// main.js
var refdata = require('./refdata.js');
function doWork() {
console.log(refdata.helperFunction1('Italy'));
}
doWork();
如何一次性从本地文件初始化数据的节点模块
我试图创建一个具有一些辅助功能,通过我在一个CSV文件中引用数据搜索节点模块。我已经使用了CSV解析器模块加载到对象,这个API似乎是与异步流读取器/管的场合使用。我不想在此模块中的辅助功能是提供给任何其他模块这个参考数据有机会先加载。
我已经使用无极试过,但为了得到它的工作,我不得不揭露这一承诺和初始化函数来调用模块(一个或多个),这是不理想的。
// refdata.js
const fs = require('fs');
const csv = require('csv-parser');
var theData = new Array();
function initRefdata() {
return(new Promise(function(resolve, reject) {
fs.createReadStream('refdata.csv')
.pipe(csv())
.on('data', function(data) {theData.push(data);})
.on('end', resolve);}));
}
function helperFunction1(arg) { ... }
module.exports.initRefdata = initRefdata;
module.exports.helperFunction1 = helperFunction1;
// main.js
var refdata = require('./refdata.js');
function doWork() {
console.log(refdata.helperFunction1('Italy'));
}
refdata.initRefdata().then(doWork);
这适用于这一个使用基准数据模块,但它是令人沮丧的,我不能使用的初始化函数内部完全以refdata.js。当我这样做,我才开始使用的辅助功能,这需要各方面的数据,才可以是有用到流管异步调用是不完整的。另外,我不希望在每次需要时重新加载所有的CSV数据。
回答如下:从@Deepal评论我能够想出:
// refdata.js
const fs = require('fs');
const csv = require('csv-parser');
var theData = new Array();
function initRefdata() {
return(new Promise(function(resolve, reject) {
fs.createReadStream('refdata.csv')
.pipe(csv())
.on('data', function(data) {theData.push(data);})
.on('end', resolve);}));
}
function helperFunction1(arg) {
if (theData.length == 0) {
initRefdata().then(nestedHelper(arg));
}
else {
nestedHelper(arg);
}
function nestedHelper(arg) { ... }
}
module.exports.helperFunction1 = helperFunction1;
// main.js
var refdata = require('./refdata.js');
function doWork() {
console.log(refdata.helperFunction1('Italy'));
}
doWork();