Package: effect
Module: TxSubscriptionRef
A TxSubscriptionRef is a transactional reference that allows subscribing to all committed changes. Subscribers receive the current value followed by every subsequent update via a transactional dequeue.
When to use
Use to store transactional state whose committed changes must be observable by subscribers.
Example (Subscribing to transactional changes)
import { Effect, TxQueue, TxSubscriptionRef } from "effect"
const program = Effect.gen(function*() {
const ref = yield* TxSubscriptionRef.make(0)
yield* Effect.scoped(
Effect.gen(function*() {
const sub = yield* TxSubscriptionRef.changes(ref)
const initial = yield* TxQueue.take(sub)
console.log(initial) // 0
yield* TxSubscriptionRef.set(ref, 1)
const next = yield* TxQueue.take(sub)
console.log(next) // 1
})
)
})
See
make for creating a transactional subscription referencechanges for subscribing through a transactional queuechangesStream for subscribing through a StreamSignature
export interface TxSubscriptionRef<in out A> extends Inspectable, Pipeable {
readonly [TypeId]: typeof TypeId
/** @internal */
readonly ref: TxRef.TxRef<A>
/** @internal */
readonly pubsub: TxPubSub.TxPubSub<A>
}
Since v4.0.0