- From: Adam Rice <notifications@github.com>
- Date: Tue, 17 Oct 2017 14:50:54 +0000 (UTC)
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/844/review/69910652@github.com>
ricea commented on this pull request.
> +function createRandomValuesStream(numberOfBytes = 10, valueInterval = 1000, maxValues = null) {
+ const cqs = new CountQueuingStrategy({ highWaterMark: 4 });
+ const readableStream = new ReadableStream({
+ totalEnqueuedItemsCount: 0,
+ interval: null,
+
+ start(controller) {
+ logStatusText('`start` method of the readable stream called')
+ this.startValueInterval(controller);
+ },
+
+ /**
+ * Starting the random values generation again after a certain period
+ * @param {*} controller
+ */
+ async pull(controller) {
This is unnecessarily complicated. You don't need to track `desiredSize` yourself. As long as you have called `enqueue()` you can rely on the ReadableStream to call you back when there is no backpressure.
It would be simpler to do something like
```javascript
pull(controller) {
if (maxValues && this.totalEnqueuedItemsCount >= maxValues) {
controller.close();
return;
}
let resolve;
const promise = new Promise(r => {
resolve = r;
});
setTimeout(() => {
controller.enqueue(randomValuesUint8Array(20));
++this.totalEnqueuedItemsCount;
resolve();
}, valueInterval);
return promise;
}
```
(untested).
--
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/pull/844#pullrequestreview-69910652
Received on Tuesday, 17 October 2017 14:51:46 UTC