- From: Adam Rice <notifications@github.com>
- Date: Mon, 01 Feb 2021 00:20:45 -0800
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Monday, 1 February 2021 08:20:58 UTC
I haven't looked at what would be required in detail, but my first instinct is that allowing reading from a `SharedArrayBuffer` would be relatively safe, as we always end up copying the data without otherwise inspecting it anyway. However, if some hypothetical browser wanted to do a zero-copy optimisation of uploads then some mischief might be possible. Reading into a `SharedArrayBuffer` with streams it would look something like (untested): ```js async function toSharedArrayBuffer(response) { const parts = []; let totalLength = 0; for await (const buffer of response.body) { parts.push(buffer); totalLength += buffer.byteLength; } const sab = new SharedArrayBuffer(totalLength); const u8 = new Uint8Array(sab); let offset = 0; for (const buffer of parts) { u8.set(buffer, offset); offset += buffer.byteLength; } return sab; } ``` This is certainly long and fiddly enough that it would be useful to have a built-in. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/fetch/issues/897#issuecomment-770666078
Received on Monday, 1 February 2021 08:20:58 UTC