- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试执行以下操作:
.on("end")
在
.on("data")
之前发生火灾完成处理每一行。我怎样才能得到
.on("end")
在
.on("data")
之后开火是否已完成所有线的处理?
import parse from 'csv-parse';
var parser = parse({});
fs.createReadStream(this.upload.location)
.pipe(parser)
.on("data", line => {
var num = Math.floor((Math.random() * 100) + 1);
num = num % 3;
num = num * 1000;
setTimeout( () => {
console.log('data process complete');
}, num);
})
.on("end", () => {
console.log('Done: parseFile');
next(null);
});
最佳答案
我认为问题在于 setTimeout
事件监听器中的 data
(或任何其他异步任务)。 end
在 data
之后触发,但即使在流触发 end
之后,异步任务也会导致它记录消息。
如果您取出 setTimeout
,那么您会看到它在 end
之前将所有消息记录在 data 中。您仍然可以执行异步任务,但可能会有一批在流结束后运行。
此代码有助于解释发生了什么:
const fs = require('fs')
const testFileName = 'testfile.txt'
fs.writeFileSync(testFileName, '123456789')
let count = 0
const readStream = fs.createReadStream(testFileName, {
encoding: 'utf8',
highWaterMark: 1 // low highWaterMark so we can have more chunks to observe
})
readStream.on('data', (data) => {
console.log('+++++++++++processing sync+++++++++++++')
console.log(data)
console.log('+++++++++++end processing sync+++++++++++++')
setTimeout(() => {
console.log('-----------processing async-------------')
console.log(data)
console.log('-----------end processing async-------------')
}, ++count * 1000)
})
readStream.on('end', () => {
console.log('stream ended but still have async tasks doing their thing')
fs.unlinkSync(testFileName)
})
关于javascript - createReadStream end 在数据完成处理之前触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36345549/
我想收到您对使用 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
我是一名优秀的程序员,十分优秀!