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), );
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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