diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2018-10-31 15:29:13 +0100 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-10-31 07:29:13 -0700 |
commit | 162eeca3734cd88b311150bcaa3f97e120b91f29 (patch) | |
tree | 3d4e8fb2d5d46499260ca8b91361301293d7b47c /js/io.ts | |
parent | 669b1a4e97793786b579e8bd5def940359c2536d (diff) |
Add helper to turn deno.Reader into async iterator (#1130)
Diffstat (limited to 'js/io.ts')
-rw-r--r-- | js/io.ts | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -115,3 +115,30 @@ export async function copy(dst: Writer, src: Reader): Promise<number> { } return n; } + +/** + * Turns `r` into async iterator. + * + * for await (const chunk of readerIterator(reader)) { + * console.log(chunk) + * } + */ +export function toAsyncIterator( + r: Reader +): AsyncIterableIterator<ArrayBufferView> { + const b = new Uint8Array(1024); + + return { + [Symbol.asyncIterator]() { + return this; + }, + + async next(): Promise<IteratorResult<ArrayBufferView>> { + const result = await r.read(b); + return { + value: b.subarray(0, result.nread), + done: result.eof + }; + } + }; +} |