为什么我的Node.js流在调用其read函数时会返回某些内容?

时间:2018-09-27 14:30:12

标签: node.js stream

我难以理解,为什么下面的方法起作用,也就是说,为什么read()函数的调用实际上返回存储在可读流中的对象。

const { Readable } = require('stream')
var r = new Readable({objectMode: true, read: () => {}}) // dummy read
var a = [1,2,3,4,5,6,7]
r.push(...a)

现在,当我调用r.read()时,我得到了推送到可读流r中的数字

r.read() // -> 1
r.read() // -> 2
// etc

但是在创建可读流时,我在上面提供了一个“虚拟” read函数(read: () => {})。那么,为什么在调用read时找回值?

我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

答案很简单。您正在调用push实现应调用的read方法。

push的目的是说:这是我从源代码中读取的内容,但不必从内部方法中调用。

换句话说:

  • 等待被调用_read
  • _从源中读取一些内容
  • 将读取的块推送到流
  • 从读取中返回大块

您只是跳过了前两个步骤,而是从外部推送了数据。