最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

高地消耗和toArray方法在一起

IT培训 admin 4浏览 0评论

高地消耗和toArray方法在一起

嗨人和节日快乐!

我正在尝试使用高地消耗csv行。要做一些特殊的处理并避免将标题传递给流,我正在调用.consume()然后我想在数组中得到结果。问题是.toArray()的回调从未被调用过。我只是对此感到好奇,因为我已经将我的解决方案改为.map().toArray(),但我仍然认为.consume()将是一个更优雅的解决方案。 ;)这是从csv文件读取并处理行的代码段:

const fs = require('fs');
const _ = require('highland');

const dataStream = fs.createReadStream('file.csv', 'utf8');

_(dataStream)
  .split()
  .consume((err, row, push, next) => {
    console.log('consuming a row', row); // <-- this shows data

    if (err) {
      push(err);
      return next();
    }

    // This condition is needed as .consume() passes an extra {} at the end of the stream <-- donno what this happens!!
    if (typeof row !== 'string') {
      return next();
    }

    const cells = row.split(',');

    if (cells[0] === 'CODE') { // <-- header row
      const { columnNames, columnIndexes } = processHeader(cells)); // <-- not relevant, works okay
      return next();
    }

    console.log('processin content here', processRow(cells)); // <-- not relevant, works okay
    push(null, processRow(cells));
    return next();
  })
  .toArray(rows => console.log('ROWS: ', rows)); // <-- I don't get anything here

非常感谢!

回答如下:

consumetoArray都消耗了一条小溪。您只能使用一次流。如果您尝试多次使用它,“stream”将为空。

高地消耗和toArray方法在一起

嗨人和节日快乐!

我正在尝试使用高地消耗csv行。要做一些特殊的处理并避免将标题传递给流,我正在调用.consume()然后我想在数组中得到结果。问题是.toArray()的回调从未被调用过。我只是对此感到好奇,因为我已经将我的解决方案改为.map().toArray(),但我仍然认为.consume()将是一个更优雅的解决方案。 ;)这是从csv文件读取并处理行的代码段:

const fs = require('fs');
const _ = require('highland');

const dataStream = fs.createReadStream('file.csv', 'utf8');

_(dataStream)
  .split()
  .consume((err, row, push, next) => {
    console.log('consuming a row', row); // <-- this shows data

    if (err) {
      push(err);
      return next();
    }

    // This condition is needed as .consume() passes an extra {} at the end of the stream <-- donno what this happens!!
    if (typeof row !== 'string') {
      return next();
    }

    const cells = row.split(',');

    if (cells[0] === 'CODE') { // <-- header row
      const { columnNames, columnIndexes } = processHeader(cells)); // <-- not relevant, works okay
      return next();
    }

    console.log('processin content here', processRow(cells)); // <-- not relevant, works okay
    push(null, processRow(cells));
    return next();
  })
  .toArray(rows => console.log('ROWS: ', rows)); // <-- I don't get anything here

非常感谢!

回答如下:

consumetoArray都消耗了一条小溪。您只能使用一次流。如果您尝试多次使用它,“stream”将为空。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论