Hyperlinkv0.8.0-beta.28

FiberSet

FiberSet.awaitEmptyconsteffect/FiberSet.ts:708
<A, E>(self: FiberSet<A, E>): Effect.Effect<void>

Waits until the fiber set is empty.

Example (Waiting for an empty set)

import { Effect, FiberSet } from "effect"

const program = Effect.gen(function*() {
  const set = yield* FiberSet.make()

  // Add some fibers that will complete
  yield* FiberSet.run(set, Effect.sleep(100))
  yield* FiberSet.run(set, Effect.sleep(200))

  // Wait for all fibers to complete
  yield* FiberSet.awaitEmpty(set)

  console.log(yield* FiberSet.size(set)) // 0
})
combinators
export const awaitEmpty = <A, E>(self: FiberSet<A, E>): Effect.Effect<void> =>
  Effect.whileLoop({
    while: () => self.state._tag === "Open" && self.state.backing.size > 0,
    body: () => Fiber.await(Iterable.headUnsafe(self)),
    step: constVoid
  })