我有这个函数用于从xml中提取字符串值然后转换为float。如下
function stringtoFloat() {
var parser = new xml2js.Parser();
fs.readFile('C:\\Temp\\tasks\\acis\\110-1100.sat\\110-1100.sat.response.xml', function (err, data) {
parser.parseString(data, function (err, result) {
var timeString = result.Message.Response[0].Events[0].MessageReportEvent[8].$.Message;
var fileTime = timeString.substr(13, 20);
var filetimeVal = parseFloat(fileTime);
return filetimeVal;
});
});
};
然后我运行这个函数5次以总结每次运行的值
function funcTotal() {
var sum = 0;
for (itr = 1; itr <= 5; itr++) {
var numFunc = stringtoFloat(); //store the output from the function in a variable
sum = sum + numFunc; //Get the sum of all 5 variables
}
console.log(sum);
return sum;
}
funcTotal();
当我运行时,我得到的结果为“NaN&#39; 为什么是这样?我该如何解决这个问题?
我已通过以下方式将fs.readFile
替换为fs.readFileSync
来更新代码。
function parseTime(){
var parser = new xml2js.Parser();
var data = fs.readFileSync('C:\\Temp\\tasks\\acis\\110-1100.sat\\110-1100.sat.response.xml', {encoding:'utf8'});
parser.parseString(data, function (err, result) {
var timeString = result.Message.Response[0].Events[0].MessageReportEvent[8].$.Message;
var fileTime = timeString.substr(13,20);
var filetimeVal = parseFloat(fileTime);
console.log(filetimeVal);
return filetimeVal;
});
};
显然有一半问题已经解决。现在似乎funcTotal()在stringtoFloat之后运行,与之前不同。但我仍然得到NaN。你能帮忙吗?