AsyncIterableIterator

A JavaScript async iterable iterator.

This models values that satisfy both the async iterable and async iterator protocols without assuming any additional helper methods are available.

See AsyncIterator on MDN.

asAsyncIterable

RES
let asAsyncIterable: t<'yield, 'return, 'next> => AsyncIterable.t<'yield>

asAsyncIterable(value) views value as an AsyncIterable.t.

asAsyncIterator

RES
let asAsyncIterator: t< 'yield, 'return, 'next, > => AsyncIterator.t<'yield, 'return, 'next>

asAsyncIterator(value) views value as an AsyncIterator.t.

forEach

RES
let forEach: (t<'yield, 'return, 'next>, 'yield => unit) => promise<unit>

forEach(iterator, f) consumes all yielded values in iterator and runs f for each yielded value.

The final return value is not passed to f.

ignore

RES
let ignore: t<'yield, 'return, 'next> => unit

ignore(iterator) marks iterator as intentionally unused.

make

RES
let make: ( unit => promise<Iterator.result<'yield, 'return>>, ) => t<'yield, 'return, unit>

make(nextFn) creates an async iterable iterator from a function returning the next result.

The returned value is both an async iterator and an async iterable.

Examples

RES
let current = ref(0) let asyncIterableIterator = AsyncIterableIterator.make(async () => { let value = current.contents current := value + 1 if value >= 3 { AsyncIterator.done() } else { AsyncIterator.value(value) } }) let main = async () => await asyncIterableIterator->AsyncIterableIterator.forEach(value => Console.log(value)) main()->ignore

next

RES
let next: t< 'yield, 'return, 'next, > => promise<Iterator.result<'yield, 'return>>

next(iterator) advances iterator without sending a value back in.

nextValue

RES
let nextValue: ( t<'yield, 'return, 'next>, 'next, ) => promise<Iterator.result<'yield, 'return>>

nextValue(iterator, value) advances iterator, sending value back into it.

t

RES
type t<'yield, 'return, 'next> = AsyncIterable.t<'yield>

Type representing an async iterable iterator.