Skip to content

Наивный подход к созданию ReadableStream из Uint8Array — использовать конструктор ReadableStream и поставить в очередь весь массив как один чанк. Для больших чанков это может быть нежелательно, так как данные фактически не передаются «потоком».

ts
const arr = new Uint8Array(64);
const stream = new ReadableStream({
  start(controller) {
    controller.enqueue(arr);
    controller.close();
  },
});

Для потоковой передачи данных меньшими частями сначала создайте экземпляр Blob из Uint8Array. Затем используйте метод Blob.stream() для создания ReadableStream, который потоково передаёт данные частями указанного размера.

ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);
const stream = blob.stream();

Размер чанка можно установить, передав число в метод .stream().

ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);

// установить размер чанка 1024 байта
const stream = blob.stream(1024);

Смотрите Документация > API > Двоичные данные для полной документации по работе с двоичными данными в Bun.

Bun от www.bunjs.com.cn