Hyperlinkv0.8.0-beta.28

SubscriptionRef

SubscriptionRef.setAndGetconsteffect/SubscriptionRef.ts:690
<A>(value: A): (self: SubscriptionRef<A>) => Effect.Effect<A>
<A>(self: SubscriptionRef<A>, value: A): Effect.Effect<A>

Sets the value of the SubscriptionRef and returns the new value, notifying all subscribers of the change.

Example (Setting and reading the new value)

import { Effect, SubscriptionRef } from "effect"

const program = Effect.gen(function*() {
  const ref = yield* SubscriptionRef.make(0)

  const newValue = yield* SubscriptionRef.setAndGet(ref, 42)
  console.log("New value:", newValue)
})
setters
export const setAndGet: {
  <A>(value: A): (self: SubscriptionRef<A>) => Effect.Effect<A>
  <A>(self: SubscriptionRef<A>, value: A): Effect.Effect<A>
} = dual(2, <A>(self: SubscriptionRef<A>, value: A) =>
  self.semaphore.withPermit(Effect.sync(() => {
    setUnsafe(self, value)
    return value
  })))