gossamer/async_iterator
Types
A pull-based iterator that yields values asynchronously. Each call to
next returns a promise. a is the yielded value type, return is
the final return value, next is the type of values passed via
next_with.
See AsyncIterator on MDN.
pub type AsyncIterator(a, return, next)
Values
pub fn for_await(
in iterator: AsyncIterator(a, return, next),
run fun: fn(a) -> any,
) -> promise.Promise(Result(Nil, js_error.JsError))
Consumes the iterator, calling fun on each yielded value. Returns
an error if the iterator or callback throws.
pub fn from_list(list: List(a)) -> AsyncIterator(a, Nil, Nil)
Creates an async iterator from a Gleam list.
pub fn new(
next: fn(option.Option(next)) -> promise.Promise(
iterator_result.IteratorResult(a, return),
),
) -> AsyncIterator(a, return, next)
Creates an async iterator from a next callback that returns a
promise for each next result.
pub fn next(
iterator: AsyncIterator(a, return, next),
) -> promise.Promise(
Result(
iterator_result.IteratorResult(a, return),
js_error.JsError,
),
)
Advances the iterator and returns a promise for the next result.
Returns an error if the underlying next callback throws or returns
a rejecting promise.
pub fn next_with(
iterator: AsyncIterator(a, return, next),
value: next,
) -> promise.Promise(
Result(
iterator_result.IteratorResult(a, return),
js_error.JsError,
),
)
Advances the iterator, passing value to its internal logic. Returns
an error if the underlying callback throws or returns a rejecting
promise.
pub fn return(
iterator: AsyncIterator(a, return, next),
) -> promise.Promise(
Result(
iterator_handler_outcome.IteratorHandlerOutcome(a, return),
js_error.JsError,
),
)
Ends iteration early by invoking the iterator’s optional return
handler. Ok(NoHandler) if the iterator doesn’t define one;
Ok(Handled) carries the result the handler produced. Returns an
error if the handler rejects.
pub fn return_with(
iterator: AsyncIterator(a, return, next),
value: return,
) -> promise.Promise(
Result(
iterator_handler_outcome.IteratorHandlerOutcome(a, return),
js_error.JsError,
),
)
Like return, but passes value to the iterator’s return handler.
value is discarded if the iterator doesn’t define one.
pub fn throw(
iterator: AsyncIterator(a, return, next),
reason reason: e,
) -> promise.Promise(
Result(
iterator_handler_outcome.IteratorHandlerOutcome(a, return),
js_error.JsError,
),
)
Signals an error to the iterator by invoking its optional throw
handler. Ok(NoHandler) if the iterator doesn’t define one — reason
is discarded; the caller must decide whether to propagate. Ok(Handled)
carries the result the handler produced. Returns an error if the
handler itself rejects.
pub fn to_list(
iterator: AsyncIterator(a, return, next),
) -> promise.Promise(Result(List(a), js_error.JsError))
Collects all values from an async iterator into a list. Consumes the
iterator. Returns an error if any next call rejects.
pub fn with_return(
iterator: AsyncIterator(a, return, next),
return: fn(option.Option(return)) -> promise.Promise(
iterator_result.IteratorResult(a, return),
),
) -> AsyncIterator(a, return, next)
Adds a return handler called when the consumer ends iteration early.
pub fn with_throw(
iterator: AsyncIterator(a, return, next),
throw: fn(e) -> promise.Promise(
iterator_result.IteratorResult(a, return),
),
) -> AsyncIterator(a, return, next)
Adds a throw handler called when the consumer signals an error.