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.

Search Document