この投稿では、Node.jsのstream.Readable
の内容を全部読み込む方法を紹介します。
stream.Readableを全部読み込む方法
for await
を使う方法がシンプルです。
const { Readable } = require('stream')
const stream = Readable.from(['hello', 'world'])
async function readAll(stream) {
let data = ''
for await (const chunk of stream) {
data += chunk
}
return data
}
readAll(stream).then(console.log)
//=> "helloworld"
イベント駆動なコード
よく見かける方法として、Readable
の"data"
イベントを使うコードがあります:
const { Readable } = require('stream')
const stream = Readable.from(['hello', 'world'])
function readAll(stream) {
return new Promise(resolve => {
let data = ''
stream.on('data', chunk => {
data += chunk
})
stream.on('end', () => resolve(data))
})
}
readAll(stream).then(console.log)
//=> "helloworld"
これでも同じ結果が得られますが、for await
を使ったほうが個人的に読みやすいと思います。