Skip to content

Web Streams API

Коротко:

Web Streams API — стандартный JS API для chunked обработки data. ReadableStream / WritableStream / TransformStream. Native в browsers + Node.js 18+. Позволяет fetch streaming response, compression on-the-fly, progressive rendering, SSE (Server-Sent Events). Key enabler для AI streaming responses, large file uploads.

Ниже: подробности, пример, смежные термины, FAQ.

Попробовать бесплатно →

Подробности

  • ReadableStream: источник (fetch response.body, file, generator)
  • WritableStream: destination (fetch POST body, WebSocket)
  • TransformStream: middle stage (decode, encrypt, compress)
  • Pipe: reader.pipeThrough(transformer).pipeTo(writer)
  • Backpressure: встроенная, slow consumer не overwhelms producer

Пример

// Stream fetch response
const response = await fetch('/api/llm-chat');
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  output.textContent += decoder.decode(value);
}

// TransformStream — decrypt on-the-fly
const decryptor = new TransformStream({
  transform(chunk, ctl) { ctl.enqueue(decrypt(chunk)); }
});

Смежные термины

Больше по теме

Часто задаваемые вопросы

Streams vs Promises?

Promise: один result. Stream: последовательность chunks. Для large responses (LLM, file upload) streams critical — не блокируют memory.

Browser support?

100% modern browsers (Chrome 89+, Firefox 102+, Safari 14.5+). Node.js 18+ имеет полный Web Streams API.

Compression Streams?

compressionStream API (2024) — native gzip/deflate через Web Streams. Replaces pako, zlib usage.