Package: effect
Module: Deferred
Runs the supplied Effect and attempts to complete the Deferred with its
memoized result.
When to use
Use when completing a Deferred should run an effect once and share its
result with all awaiters.
Details
The returned effect succeeds with true when this call completed the
Deferred, or false if it was already completed.
Example (Completing a Deferred from an effect)
import { Deferred, Effect } from "effect"
const program = Effect.gen(function*() {
const deferred = yield* Deferred.make<number>()
const completed = yield* Deferred.complete(deferred, Effect.succeed(42))
console.log(completed) // true
const value = yield* Deferred.await(deferred)
console.log(value) // 42
})
See
completeWith for storing an effect directly without memoizing its resultSignature
declare const complete: { <A, E, R>(effect: Effect<A, E, R>): (self: Deferred<A, E>) => Effect<boolean, never, R>; <A, E, R>(self: Deferred<A, E>, effect: Effect<A, E, R>): Effect<boolean, never, R>; }
Since v2.0.0