Spec-Zone.ru › Web APIs

ReadableStreamBYOBRequest: метод respondWithNewView()

Ограниченная доступность

Эта функция не является базовой, так как она не работает во всех широко используемых браузерах.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Веб-воркерах.

Метод respondWithNewView() интерфейса ReadableStreamBYOBRequest указывает новый вид, в который потребитель связанного потока чтения байтов должен записывать вместо ReadableStreamBYOBRequest.view.

Новый вид должен быть TypedArray или DataView, обеспечивающим представление той же области памяти, что и ReadableStreamBYOBRequest.view. После вызова этого метода, вид, переданный в метод, будет перемещён и больше не будет изменяемым.

Метод предназначен для случаев, когда базовому источнику байтов необходимо выполнить внутреннее перемещение byobRequest.view перед завершением ответа. Например, источник может перенести представление BYOB в отдельный поток работ и дождаться, пока поток работ вернёт его обратно после заполнения.

Синтаксис

respondWithNewView(view)

Параметры

view

TypedArray или DataView, в который потребитель связанного потока чтения байтов должен записывать вместо ReadableStreamBYOBRequest.view.

Это представление должно ссылаться на ту же область памяти, что и ReadableStreamBYOBRequest.view, и занимать одинаковый или меньший объем памяти. В частности, это должен быть либо буфер представления, либо его перенесённая копия, должно быть одинаковым byteOffset, и byteLength (число записанных байтов) должно быть меньше или равно этому значению.

Возвращаемое значение

Ничего (undefined).

Исключения

TypeError

Выбрасывается, если объект-источник не является ReadableStreamBYOBRequest, или нет связанного контроллера, или связанный внутренний буфер массива не существует или отделён. Также может быть выброшен, если view имеет нулевую длину при активном чтении или ненулевую при вызове на закрытом потоке.

RangeError

Выбрасывается, если новое view не соответствует области памяти ReadableStreamBYOBRequest.view. Например, это не тот же буфер (или его перенесённая копия), имеет другое byteOffset, или больше, чем память, доступная для базового представления.

Примеры

Передаваемое представление должно быть того же типа, что и ReadableStreamBYOBRequest.view, иметь тот же базовый буфер и смещение байта, и иметь одинаковую или меньшую длину в байтах.

Например, мы можем определить представление и ответить следующим образом:

const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
byobRequest.respondWithNewView(
  byobRequest.view.subarray(v.byteOffset, bytesRead),
);

Спецификации

Спецификация
Потоки
# ref-for-rs-byob-request-respond-with-new-view①

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
respondWithNewView 89 89 102 75 Нет 89 102 63 Нет 15.0 89

См. также

  • Использование потоков чтения байтов

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest/respondWithNewView

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API