我想在我需要的时候从流中获取块。但是不知道如何去做而不是流。据我所知,通常的流是从输入流到输出,但是我想要的是存储流,然后在我需要的时候泄漏一些量,直到流干。
“真实的的密码"
const fs = require('fs')
let end = false
const requestChunkFrom = async (stream, size) => {
while(1) {
if (stream.readable){
let data = await stream.read(size);
if (data) return {chunk: data , isEnd: false}
}
if (stream.closed) return {chunk: null, isEnd: true}
}
}
const job = async () => {
let stream = fs.createReadStream('README.md')
stream.on('end', () => {
console.log('end')
stream.close()
})
stream.on('readable', () => {
console.log('readable')
})
do {
const {chunk, isEnd} = await requestChunkFrom(stream, 16)
end = isEnd
console.log(chunk)
} while (!end)
}
job()
我认为这个函数会一直等到readable
或closed
返回块,但它没有按预期工作。
1条答案
按热度按时间wydwbb8l1#
首先,你的异步函数中没有任何wait,你的
stream.read()
返回一个Promise
,所以你需要等待它。尝试此操作,看看是否会得到任何结果