跳到主要内容

2 篇博文 含有标签「response」

查看所有标签

ReadAbleStream 转换为 ReadStream

· 阅读需 1 分钟
1adybug
子虚伊人
import { Readable } from "stream"

const reader = readAbleStream.getReader()

const readStream = new Readable({
read() {
reader.read().then(({ done, value }) => {
if (done) readStream.push(null)
else readStream.push(value)
})
},
})

async function* nodeStreamToIterator(stream: ReadStream): AsyncGenerator<Buffer, void, never> {
for await (const chunk of stream) yield chunk
}

function iteratorToStream(iterator: AsyncGenerator<Buffer, void, never>): ReadableStream {
return new ReadableStream({
async pull(controller) {
const { value, done } = await iterator.next()

if (done) controller.close()
else controller.enqueue(value)
},
})
}
提示

2024 年 3 月 29 日更新

Node.js 中其实自带了转换的功能

import { Readable } from "stream"

async function main() {
const response = await fetch("http://example.com")
const readable = Readable.fromWeb(response.body as any)
}

main()