作为for循环的总和返回NaN

时间:2015-11-19 05:50:46

标签: javascript node.js

我有这个函数用于从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。你能帮忙吗?

0 个答案:

没有答案