首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

node中的Stream-Readable和Writeable解读

ReadableReadable对应于Java中的InputStream和Reader两个类,针对Readable设置encode编码可完成内部数据由Buffer到字符的转换。...事件 readable.pause() readable.unpipe() 可能这样讲解大家仍不明白Readable Stream这两种模式的区别,那么下文从更深层次分析两种模式的机制。...深入Readable的实现 Readable继承EventEmitter,大家也都知道。但是相信大家应该不怎么熟悉Readable的实例属性**_readableState**。...这意味着,针对Readable Stream执行read(0)方法会触发readable事件,但是不会读当前缓冲区。...针对这个私有方法_read,文档上有特殊说明,自定义的Readable实现类需要实现这个方法,在该方法中手动添加数据到Readable对象的读缓冲区,然后进行Readable的读取。

1.1K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Readable Stream(可读流)3. Writable Stream(可写流)4. 流模式(objectMode )5. 缓冲(highWa

    Readable Stream(可读流) 创建可读流时,需要继承Readable,并实现_read方法。 ① _read方法是从底层系统读取具体数据的逻辑,即生产数据的逻辑。...它抽象了在可读流实现(Readable stream implementation)内部发生的复杂的状态管理过程。 在任意时刻,任意可读流应确切处于下面三种状态之一: readable...._readableState.flowing = null readable._readableState.flowing = false readable....在这个状态下,监听 'data' 事件,调用 readable.pipe() 方法,或者调用 readable.resume() 方法, readable....调用 readable.pause() 方法, readable.unpipe() 方法, 或者接收 “背压”(back pressure), 将导致 readable.

    1.5K20

    Node中的流

    所有stream都是EventEmitter实例,通过事件机制来读写数据,例如上面提到的pipe()方法相当于: // readable.pipe(writable)readable.on('data'...Readable.pause(),进入Paused模式 Writable再干一会儿压力不大了的时候,会触发drain事件,此时pipe调用Readable.resume()进入Flowing模式,让Readable...建议在此时对上游限流,即调用Readable.pause()先给停了,给下游多点时间处理堆积的数据,下游觉得轻松了会触发darin事件,表示此时有能力处理更多数据了,所以这时候应该开闸放水(Readable.resume...同样,Readable触及highWaterMark的标志是push()返回false,说明Readable的buffer不那么十分空了,此时如果还持续push(),没错,也会出现BackPressure...(Readable消费能力限制了从数据源到Readable的传输速度): 快-------------慢 数据源-------->Readable------->Writable

    2.3K10
    领券