Почему мой поток Node.js возвращает что-то при вызове функции чтения? - PullRequest
0 голосов
/ 27 сентября 2018

Мне трудно понять, почему работает следующее, то есть, почему вызовы функции 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)

Теперь, когда яinvoke r.read() Я получаю числа, которые я вставил в свой читаемый поток r

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

Но я предоставил «фиктивную» функцию read (read: () => {}) выше при создании моего читаемого потока.Итак, почему я возвращаю значения при вызове read?

Помощь будет высоко ценится.

1 Ответ

0 голосов
/ 29 сентября 2018

Ответ прост.Вы вызываете метод push, который должен вызывать ваша реализация read.

Цель push состоит в том, чтобы сказать: вот что я прочитал из источника, но это не так.Вы должны быть вызваны из внутренних методов.

Другими словами в процессе:

  • ждать _read для вызова
  • _читать что-то из источника
  • выдвинуть фрагменты чтения в поток
  • вернуть фрагменты из чтения

Вы просто пропустили два первых шага и вытолкнули данные извне.

...