Почему я не могу повторно использовать буфер, который я принес в readablestreambyobreader?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему я не могу повторно использовать буфер, который я принес в readablestreambyobreader?

Сообщение Anonymous »

может кто -нибудь объяснить рациональное чтение из веб -API (WhatWG) ReadaBleStream, используя читатель byob (принесите свой собственный буфер) (принесите свой собственный буфер) читатель (принеси свой собственный буфер)

Код: Выделить всё

ReadableStreamBYOBReader
), почему вы не можете повторно использовать свой собственный буфер вы принесли .
Вопрос: Какой смысл принести свой собственный буфер , если буфер, который вы принес, нельзя использовать повторно? Каково оставшееся преимущество, связанное с привлечением собственного буфера? Почему бы просто не дать максимальный размер чтения? В первый раз, когда вы входите в супермаркет с собственной сумкой, все работает так, как и ожидалось, супермаркет заполняет вам сумку, вы опустошиваете ее дома, жена счастлива с вами, отлично. Затем вы попробуете еще раз со своей сумкой. Но супермаркет позволяет вам заполнить вашу сумку, поскольку она уже использовалась ранее. Удачи с объяснением этого дома. Не работает в Safari, так как Safari не имеет поддержки BYOB, в первую очередь. Br />

Код: Выделить всё

const url = 'https://raw.githubusercontent.com/Borewit/test-audio/958e057/Various%20Artists%20-%202009%20-%20netBloc%20Vol%2024_%20tiuqottigeloot%20%5BMP3-V2%5D/01%20-%20Diablo%20Swing%20Orchestra%20-%20Heroines.mp3';

async function byobReader(reader) {
const myBuffer = new Uint8Array(256);
let result;
let i=0;
do {
console.log(`Read iteration ${++i}...`);
result = await reader.read(myBuffer);
console.log(`Read read=${result.value.length} bytes, done=${result.done}`);
} while(!result.done);
}

async function run() {
console.log('fetching...');
const response = await fetch(url);
if (response.ok) {
console.log('HTTP response succussful');
const stream = response.body;
try {
const reader = stream.getReader({mode:'byob'});
console.log('BYOB Reader supported');
await byobReader(reader);
} catch(error) {
console.error(`Failed to initialize BYOB-Reader=${error.message}`);
}
} else {
console.error(`Failed with HTTP-status=${response.status}`);
}
}

run().catch(error => {
console.error(`Error: ${error.message}`);
});


Если вы поддерживаете браузер Byob, вывод будет:

Код: Выделить всё

fetching...
HTTP response succussful
BYOB Reader supported
Read iteration 1...
Read read=256 bytes, done=false
Read iteration 2...
Failed to initialize BYOB-Reader=Failed to execute 'read' on 'ReadableStreamBYOBReader': This readable stream reader cannot be used to read as the view has byte length equal to 0
Единственное четкое преимущество, которое я могу видеть, по сравнению с readableStreamDefTreader , - это то, что вы можете установить ограничение на размер буфера.

Подробнее здесь: https://stackoverflow.com/questions/794 ... byobreader
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»