ReadableStreamBYOBRequest: respondWithNewView() method
Baseline
2026
Newly available
Since March 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Note: This feature is available in Web Workers.
Phương thức respondWithNewView() của giao diện ReadableStreamBYOBRequest chỉ định một view mới mà người tiêu thụ của readable byte stream liên quan nên ghi vào thay vì ReadableStreamBYOBRequest.view.
View mới phải là một TypedArray hoặc DataView cung cấp view trên cùng vùng bộ nhớ sao lưu như ReadableStreamBYOBRequest.view. Sau khi phương thức này được gọi, view được truyền vào phương thức sẽ được chuyển và không còn có thể sửa đổi.
Phương thức này dành cho các trường hợp nguồn byte bên dưới cần truyền byobRequest.view nội bộ trước khi hoàn thành phản hồi của nó. Ví dụ, nguồn có thể truyền view BYOB đến một worker thread riêng biệt và đợi worker truyền lại sau khi đã điền dữ liệu vào.
Cú pháp
respondWithNewView(view)
Tham số
view-
Một
TypedArrayhoặcDataViewmà người tiêu thụ của readable byte stream liên quan nên ghi vào thay vìReadableStreamBYOBRequest.view.Đây phải là view trên cùng vùng bộ nhớ sao lưu như
ReadableStreamBYOBRequest.viewvà chiếm cùng hoặc ít bộ nhớ hơn. Cụ thể, nó phải là bộ nhớ đệm của view hoặc phiên bản đã được truyền, phải có cùngbyteOffset, vàbyteLength(số byte đã ghi) nhỏ hơn hoặc bằng view đó.
Giá trị trả về
Không có (undefined).
Ngoại lệ
TypeError-
Được ném nếu đối tượng nguồn không phải là
ReadableStreamBYOBRequest, hoặc không có controller liên quan, hoặc mảng bộ nhớ đệm nội bộ liên quan không tồn tại hoặc bị tách ra. Cũng có thể được ném nếuviewcó độ dài bằng không khi có reader đang hoạt động, hoặc khác không khi được gọi trên stream đã đóng. RangeError-
Được ném nếu
viewmới không khớp với vùng bộ nhớ sao lưu củaReadableStreamBYOBRequest.view. Ví dụ, nó không phải là cùng bộ nhớ đệm (hoặc phiên bản đã được truyền), cóbyteOffsetkhác, hoặc lớn hơn bộ nhớ có sẵn cho view sao lưu.
Ví dụ
View cần truyền phải có cùng loại như ReadableStreamBYOBRequest.view, có cùng bộ nhớ đệm bên dưới và byte offset, và có byteLength bằng hoặc nhỏ hơn.
Ví dụ, chúng ta có thể định nghĩa view và phản hồi như bên dưới:
const v = controller.byobRequest.view;
bytesRead = socket.readInto(v.buffer, v.byteOffset, v.byteLength);
byobRequest.respondWithNewView(
byobRequest.view.subarray(v.byteOffset, bytesRead),
);
Thông số kỹ thuật
| Specification |
|---|
| Streams> # ref-for-rs-byob-request-respond-with-new-view①> |