For循环结果与节点js中的预期不同

时间:2019-05-31 01:03:24

标签: javascript node.js for-loop

我是Node js的新手,我的目标是3秒,一次要在csv文件中打印行数,但是当我尝试使用for循环打印时,它将给出错误的结果,因此总是将0打印为行数,请指导我要解决此问题,我认为节点js不能逐行执行,执行过程有所不同。我的代码在下面

在我的程序中,最初读取最新文件并加载csv文件并找到行数,但是节点js从最后一行开始执行,因此将行数设为0

    var fs = require('fs'),
    path = require('path'),
    _ = require('underscore');

    function getMostRecentFileName(dir) 
       {
         var files = fs.readdirSync(dir);
        return _.max(files, function (f) 
         {
          var fullpath = path.join(dir, f);
          return fs.statSync(fullpath).ctime;
         });
        }
    var dirname="";   
    var file="";  
    var fl=0;
   const csv = require('fast-csv'); 
   var RCnt=0;

   function file_data()
     {
       dirname=getMostRecentFileName("C:\\Users\\muniy\\OneDrive\\Desktop\\Data\\Log");
        file="C:\\Users\\muniy\\OneDrive\\Desktop\\Data\\Log\\"+dirname;
        fs.createReadStream(file) 
         .pipe(csv())
         .on('data', (row) => {
         RCnt++;
         console.log(row[2]);

         })
       .on('end', () => {
        console.log('File Processed');
       }); 
      } 
   for(fl=0;fl<3;fl++)
      {
       setTimeout(file_data, 3000);
        console.log(RCnt);
       }

该文件包含12行,但始终打印为0

0 个答案:

没有答案