- From: valentin <notifications@github.com>
- Date: Sun, 23 Jul 2017 09:22:45 +0000 (UTC)
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/issues/755@github.com>
This example is written in typescript (to show types) and purely hypothetical as a demonstration :
```ts
const buffer: Uint8Array = new Uint8Array(1e6);
let offset: number = 0;
const writableStream: WritableStream<number> = new WritableStream<number>({
write(byte: number) {
buffer[offset++] = byte;
// here we can return a promise indicating when the write is done,
// but we cannot provide any feedback about the value of offset for example
},
context(...args: any[]) { // purely hypothetical
return { offset: offset };
}
});
const writer: WritableStreamDefaultWriter<number> = writableStream.getWriter();
```
```ts
/** in a separate context where only writer is available (ex: in a function) **/
async function foo(writer: WritableStreamDefaultWriter<number>): boolean {
// this could be interesting to have access to some contextual data
const offset: number = writer.getContext().offset; // of course impossible because not defined
if(offset > 5) {
await writer.write(2);
} else {
await writer.write(1); // a void promise is always returned
}
}
```
Without the possibility to extends WritableStreamDefaultWriter (as an es6 class) or having a specific method (like `getContext()`), it's pretty hard to get an detailed answer of the write (same for read). What I noticed, is was that the write only returns *success* or *failed* (intentional and probably the best), we don't have any idea of the contextual state of the writable stream. The queuing strategy with backpressure does a lot of but in some case we need more.
I could be for example interested to change the value of the next `.write()` according to what send me back the writer.
The two only solutions I see here are :
- pass `getContext()` as a callback
- or extend `WritableStreamDefaultWriter` with `Object.definyProperty`
... but none of them sound really elegant to me.
So we could maybe extends the UnderlyingSink with `context` and add `getContext()` to the writer ? Or have you any idea how to solve this dilemma ?
--
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/streams/issues/755
Received on Sunday, 23 July 2017 09:23:09 UTC