Почему в API веб-потоков отсутствует Duplex Stream?

Я знаком со «старым» потоком nodejs, поэтому необходимость в Duplex steam «потоки, которые доступны как для чтения, так и для записи (например, net.Socket)» кажутся совершенно очевидными.

Цитировать

Примеры дуплексных потоков включают:

  1. TCP-сокеты
  2. zlib-потоки
  3. криптопотоки

Когда я изучаю новые функции nodejs18 и обнаруживаю, что nodejs добавил API веб-потоков . Я был немного удивлен, увидев, что веб-потоки имеют только 3 типа пара , то есть в нем отсутствует дуплексный поток. Я заметил, что это потому, что https://streams.spec.whatwg.org/ определяет только 3 типа потоков. Но почему ? Разве не очевидна потребность в потоке как для чтения, так и для записи?

2 ответа

Дуплексный поток — это любой объект сreadableимущество, которое являетсяReadableStream, иwritableимущество, которое являетсяWritableStream. Поскольку в JavaScript легко создавать объекты с двумя свойствами (используйте синтаксис{ readable, writable }), нет необходимости в классе или другом помощнике. Таким образом, стандарт не включает один.

Стандарт дает больше информации об этом в https://streams.spec.whatwg.org/#other-specs-duplex .

Я просто изучал это прямо сейчас, и да, нет эквивалентаDuplexдля веб-потоков, однако вы создаете свои собственные, делая что-то вроде этого:

      class MyStream<R = any, W = any> implements ReadableWritablePair<R, W> {
  public readable: ReadableStream<R>;
  public writable: WritableStream<W>;
  public constructor() {
    this.readable = new ReadableStream();
    this.writable = new WritableStream();
  }
}

Затем реализуйте каждую сторону отдельно.

Другие вопросы по тегам