传递给readFileSync的匿名函数不返回任何数据 [英] Anonymous function passed to readFileSync is not returning any data
问题描述
我写了一个简单的JS对象,它有函数 csvFileToArray
。函数应返回已解析的CSV数组。
I have writen simple JS object which has function csvFileToArray
. Function should return parsed CSV array.
问题是我没有传递给 readFileSync $ c的匿名函数的输出$ C>。
The problem is that I don't have output from anonymous function which is passed to readFileSync
.
test1
被正确安装到控制台但是 test2
是不是。
test1
is loged to console correctly but test2
is not.
这是我第一次使用node.js我做错了什么?
It's my first time with node.js What am I doing wrong?
var passwdArray = [];
var csv = function () {
this.csvFileToArray = function (fileName, delimiter) {
console.log("test1");
var fs = require('fs');
fs.readFileSync(fileName, 'utf8', function(err, data) {
console.log("test2");
if (err) {
throw err;
} else {
var csvLineArray = data.split("\n");
var csvArray = [];
csvArray['header'] = csvLineArray[0].split(delimiter);
csvArray['data'] = [];
for(var i = 1; i < csvLineArray.length; i++) {
csvArray['data'].push(csvLineArray[i].split(delimiter));
}
return csvArray;
}
});
}
}
var csvHandler = new csv();
var test =csvHandler.csvFileToArray('test.csv', ',');
console.log(test);
推荐答案
您正在使用 readFileSync 功能和它的工作同步。所以你不能在里面使用回调。 DOC
You are using readFileSync function and it's working sync. So you can not use callback inside it. DOC
所以你可以像以下一样使用它:
So you can use it like:
var passwdArray = [];
var csv = function () {
this.csvFileToArray = function (fileName, delimiter) {
console.log("test1");
var fs = require('fs');
var data = fs.readFileSync(fileName, 'utf8');
var returnedData = doSomething(null,data);
console.log(returnedData);
}
};
function doSomething(err, data) {
console.log("test2");
if (err) {
throw err;
} else {
var csvLineArray = data.split("\n");
var csvArray = [];
csvArray['header'] = csvLineArray[0].split(delimiter);
csvArray['data'] = [];
for(var i = 1; i < csvLineArray.length; i++) {
csvArray['data'].push(csvLineArray[i].split(delimiter));
}
return csvArray;
}
};
var csvHandler = new csv();
var test =csvHandler.csvFileToArray('test.csv', ',');
console.log(test);
如果要将其用作异步,可以使用 readFile 功能。
If you want to use it async you can use readFile function.
这篇关于传递给readFileSync的匿名函数不返回任何数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!