【问题标题】:NodeJs csv module - pause & resumeNodeJs csv 模块 - 暂停和恢复
【发布时间】:2014-05-29 12:50:33
【问题描述】:

我正在使用 nodeJs csv 模块来解析 10000 条记录的大 csv 和每条记录,即 .on('record', func),我必须实现一个耗时的逻辑。但是节点不会等到我完成。我该如何处理?该文档谈到http://www.adaltas.com/projects/node-csv/ 暂停()和恢复()。但是我在哪里使用它呢?

    var csv = require('csv');
    var fs = require('fs');
    csv()
    .from.stream(fs.createReadStream(__dirname+'/sample.in'))
    .to.path(__dirname+'/sample.out')
    .transform( function(row){
      row.unshift(row.pop());
      return row;
    })
    .on('record', function(row,index){
              //Time consuming logic goes here
    })
    .on('end', function(count){
      console.log('Number of lines: '+count);
    })
    .on('error', function(error){
      console.log(error.message);
    });

【问题讨论】:

  • 你的节点版本是多少? 10x 之前的节点对可读流有不​​同的暂停和恢复实现。

标签: javascript node.js csv


【解决方案1】:

我终于得到了这个工作。感谢 node-csv 开发者

//Read through the csv file one row at a time
csv()
    .from(__dirname+'data.csv', { columns: true })
    .transform(function(row, index, next){
         setTimeout(function(){
         console.log(row);
         next()
         }, 3000); //replace setTimeout with any fn and call next() in the callback

    }, {parallel: 1})
    .on("end", function (count) {
      var finalcount = count;
      var logtext = 'SUMMARY: Total count: ' + finalcount + '\n' 
                    + 'Error count:' + errorcount  + "("+errorArray+")"
                    + '\n' + 'Success count:' + successcount;
      fs.appendFile(config.logfilename, '\n'+ logtext, function (err) {
        console.log(logtext);
      });  


      console.log("done", count);
    });

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 2011-03-16
    • 2013-07-19
    • 2015-07-28
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多