- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前,我正在尝试向 on 事件传递一个额外的参数,从 CSV 文件获取数据后将触发该事件。我尝试将其作为额外参数添加到回调函数中,但它总是未定义。
fs.createReadStream(values[i], {start: 118})
.pipe(fastCSV())
.on('data', function(data, myExtraParamter){
logger.info(data);
logger.info(myExtraParamter); --> this one shows an undefined
})
.on('end', function(data){
logger.info("Reading all CSV file completed.");
});
如果您能提供有关如何将数据传递到事件回调中的指示,我将不胜感激。
最佳答案
正如您所说,您的要求是在 Node.js 流上的 data
事件上接收附加参数。
我们需要在这里澄清的是 - 我预计所描述的解决方案会对性能产生相当大的影响,但我们都遇到过外部库迫使我们放弃明智的解决方案的情况。
为了实现您的目标,您需要重写 node.js 流处理 data
事件的方式 - 这本质上会导致扩展 PassThrough
使用重写的 EventEmitter.emit
方法进行流。
const {PassThrough} = require("streams");
class DataExtender extends PassThrough {
constructor(...extra) {
this._extra = extra;
}
emit(ev, ...args) {
if (ev === 'data') return super.emit(ev, ...this._extra, ...args);
super.emit(ev, ...args);
}
}
此类将允许您将任意数量的参数推送到消费流。用法需要稍作修改,您就可以了:
fs.createReadStream(values[i], {start: 118})
.pipe(fastCSV())
.pipe(new DataExtender("extraParam1", "extraParam2")) // you set those on "pipe"
.on('data', function(data, myExtraParamter, myOtherParamter) { // you get those on "data"
logger.info(data);
logger.info(myExtraParamter); // --> this won't show undefined anymore.
})
.on('end', function(data) { // BTW: data will be undefined here...
logger.info("Reading all CSV file completed.");
});
关于node.js - 在数据事件上将额外参数传递给 fs.createReadStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51141532/
我想收到您对使用 fp-ts 的 TaskEither 使用的反馈或其他用于学习目的的函数式编程库: 我在处理nodejs流时使用Promise,以这种方式使用Promise是一个好的解决方案吗?最直
我正在尝试打开一个 img 文件并通过 http 发送它。我读到最好的方法是 creatReadStream,因为它是异步的,而且性能更好。 这是我的代码: var file = fs.createR
我正在尝试执行以下操作: 逐行流式传输 csv 文件。 修改每一行中包含的数据。 流式传输和处理所有行后,完成并继续执行下一个任务。 问题是.on("end")在 .on("data") 之前发生火灾
我是 NodeJS 的新手,我正在尝试从麦克风直播到 MP3 文件,字节正在实时写入 MP3 文件,我希望用户能够真正播放这个 MP3 流文件-瓷砖也。 到目前为止,我为阅读流所做的(当然是在伟大社区
我正在尝试读取上传的 .csv 文件并将其存储在数组中,以便将数据批量插入到我的数据库中,我正在使用 csv-parser package 和用于文件流的 fs 。 router.post('/fil
我现在正在学习 Node.js,使用“Beginning Node.js”教科书。 书中的示例在命令提示符下无法正常执行。 (我正在使用 Ubuntu 18.04 和 Node v9.4.0,这本书是
如何设置一个等于 fs.createReadStream 返回的数据的变量,以便我可以打印出该变量,然后获取文件内容。 var rs = fs.createReadStream('file.txt',
https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options .我还有一个一般性问题。 我可以假设除非文档中另有说明,否则提到的
为了使用 nodejs 逐行读取文本文件,我有以下代码: var lineReader = require('readline').createInterface({ input: require(
我需要使用 formData 将 pdf 发送到 api。我下载了 pdf,登录后如下所示:如果我fs.writeFileSync它是完全可读的。但我想尝试将它传递给 api 而不必用 fs 编写它,
我正在使用 DropBox API 上传文件。要将文件上传到保管箱,我将执行以下步骤: 首先将文件从 form 上传到服务器上的本地目录。 使用fs.createReadStream从本地目录读取文件
根据 official document , createReadStream 可以接受缓冲区类型作为 path 参数。 但是很多问答只提供了如何通过string发送参数的解决方案,而不是buffer
抱歉,我有几个关于 createReadStream() 的问题。 基本上,我正在做的是动态构建一个文件,并在完成后使用 fs 将其流式传输给用户。我正在使用 .pipe() 来确保我的节流正确(如果
我正在尝试使用我的 NodeJS 应用程序将文件从我的 s3 存储桶发送到客户端。这是我目前所拥有的: import { S3 } from '@aws-sdk/client-s3'; const B
我正在运行一个 SSR React node.js 服务器,我需要一些关于如何解决我的问题的建议。我的 node.js 服务器崩溃/重新启动错误,如窗口未定义等,而不是仅仅记录并打印出 500 错误消
我正在尝试编写一个测试用例,以判断此代码何时会发出错误: s3.getObject({ Bucket: mediaBucket, Key: mediaId, }).create
我更喜欢使用 Promise 而不是回调,因此我使用了 util.promisify。 `use strict`; const util = require(`util`), request
目前,我正在尝试向 on 事件传递一个额外的参数,从 CSV 文件获取数据后将触发该事件。我尝试将其作为额外参数添加到回调函数中,但它总是未定义。 fs.createReadStream(values
我尝试了这个简单的代码 var fs = require('fs'); var stream = fs.createReadStream(fileName); stream.on('readable'
如果我只想一次读取 10 个字节,或者一次读取一行数据(查找换行符),是否可以像这样传递 fs.createReadStream() 选项 var options = {} var strea
我是一名优秀的程序员,十分优秀!