Я использую приложение Vue.js для чтения текста с сервера. Сервер передает небольшие объемы текста при каждом запросе. Например, общая длительность запроса составляет 10 секунд, а сервер записывает в поток 1 слово в секунду.
Я пробовал так:
Код: Выделить всё
fetch('https://my-streaming-api').then(response => {
const reader = response.body.getReader();
async function readStream() {
while (true) {
const { done, value } = await reader.read();
if (done) break;
// Process the chunk here (e.g., display it)
console.log('Chunk:', value);
}
}
readStream();
});
Проблема в том, что функция read() будет блокироваться до тех пор, пока не будет выполнен весь запрос, а возвращаемое значение будет содержать все данные. Я хотел бы иметь возможность отображать каждое слово (в данном случае) по мере его поступления. Я подозреваю, что происходит какой-то встроенный размер фрагмента или внутренняя буферизация. Есть ли способ это контролировать?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... all-chunks