MCPcopy Create free account
hub / github.com/Effect-TS/effect / fromAsyncIterable

Function fromAsyncIterable

packages/effect/src/Channel.ts:1867–1883  ·  view source on GitHub ↗
(
  iterable: AsyncIterable<A, D>,
  onError: (error: unknown) => E
)

Source from the content-addressed store, hash-verified

1865 * @since 4.0.0
1866 */
1867export const fromAsyncIterable = <A, D, E>(
1868 iterable: AsyncIterable<A, D>,
1869 onError: (error: unknown) => E
1870): Channel<A, E, D> =>
1871 fromTransform(Effect.fnUntraced(function*(_, scope) {
1872 const iter = iterable[Symbol.asyncIterator]()
1873 if (iter.return) {
1874 yield* Scope.addFinalizer(scope, Effect.promise(() => iter.return!()))
1875 }
1876 return Effect.flatMap(
1877 Effect.tryPromise({
1878 try: () => iter.next(),
1879 catch: onError
1880 }),
1881 (result) => result.done ? Cause.done(result.value) : Effect.succeed(result.value)
1882 )
1883 }))
1884
1885/**
1886 * Creates a channel from an `AsyncIterable`, emitting each yielded value as a

Callers 1

fromAsyncIterableArrayFunction · 0.70

Calls 5

addFinalizerMethod · 0.80
fromTransformFunction · 0.70
nextMethod · 0.65
doneMethod · 0.45
succeedMethod · 0.45

Tested by

no test coverage detected