如何将字符串转换为可读流?

dop*_*man 5 node.js coffeescript

我正在尝试将字符串流式传输到另一个流:

streamer = new stream.Transform objectMode: true
stringer = (string) ->
    streamer._transform = (chunk, encoding, done) ->
        @push string.split('').shift()
        done()

    return streamer

streamer.on 'readable', ->
    console.log 'readable'

stringer('hello').pipe process.stdout
Run Code Online (Sandbox Code Playgroud)

但是控制台中没有任何日志。我究竟做错了什么?

小智 8

在 Node 10.x 中,Readable.from添加了便捷方法,这使得实现起来更加简单。

const Readable = require('stream').Readable;

Readable.from('hello').pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)


yei*_*iel 3

正如您自己所说,您需要的是可读流而不是转换流。此外,您还有一个错误,因为string.split('')总是返回相同的数组,然后.shift()总是返回相同的字母。重写后的代码如下:

'use strict'

Readable = require('stream').Readable

stringer = (string) ->
  array = string.split('')
  new Readable
    read: (size) ->
      @push array.shift()
      return

readable = stringer('hello')

readable.on 'readable', ->
  console.log 'readable'
  return

readable.pipe process.stdout
Run Code Online (Sandbox Code Playgroud)