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
let asAsyncIterable: t<'yield, 'return, 'next> => AsyncIterable.t<'yield>asAsyncIterable(value) views value as an AsyncIterable.t.
asAsyncIterator
let asAsyncIterator: t<
'yield,
'return,
'next,
> => AsyncIterator.t<'yield, 'return, 'next>asAsyncIterator(value) views value as an AsyncIterator.t.
forEach
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
let ignore: t<'yield, 'return, 'next> => unitignore(iterator) marks iterator as intentionally unused.
make
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
RESlet 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
let next: t<
'yield,
'return,
'next,
> => promise<Iterator.result<'yield, 'return>>next(iterator) advances iterator without sending a value back in.
nextValue
let nextValue: (
t<'yield, 'return, 'next>,
'next,
) => promise<Iterator.result<'yield, 'return>>nextValue(iterator, value) advances iterator, sending value back into it.
t
type t<'yield, 'return, 'next> = AsyncIterable.t<'yield>Type representing an async iterable iterator.