Follow one execution
Effect.schedule uses this recurrence schedule for two void deliveries, then completes; schedule outputs are not payloads.
fromScheduleTick 0. Schedule: recur; Output: void.
Read this diagram
Follow each lane from left to right. Events stacked vertically share a tick; the green cursor marks the current time across every lane.
- A value
The text inside the pill is the emitted value. - Work starts
The raised chevron starts an inner run (^in the source). - The run returns
The vertical bar ends this lane’s run. - A cause is delivered
The exclamation mark belongs to this lane. - Work is interrupted
The cross marks cancellation of this run. - Current time
The line and diamond move together across all lanes. - Happening now
A highlighted event is at the current tick. - Still ahead
Muted, dashed values have not happened yet. - Time continues
The lane’s arrow is not a return marker. An empty stretch can be quiet work that is still running.
Illustrated ticks start at 0. At 1×, one illustrated tick takes one second; captions specify real durations when timing matters. A cause or interruption belongs to its lane, and other work may continue. Scroll horizontally to inspect the rest of a long timeline.
Construction starts no clock. Running the Fx repeatedly invokes the sink under the schedule and completes when the schedule completes. Schedule failures are forwarded as causes; interruption cancels waiting and stops further ticks. The returned Fx retains the schedule’s Error and Env channels.
Import
import { fromSchedule } from "@typed/fx/Fx";Signatures
export declare const fromSchedule: <Error, Env>(schedule: Schedule<unknown, unknown, Error, Env>) => Fx<void, Error, Env>;Why
Effect Schedule values already
encode recurrence, delay, and typed schedule failures. fromSchedule exposes
those decisions as producer-driven ticks without another timing model. The
schedule governs all ticks: Schedule.recurs(2) emits twice here. In contrast,
repeat(source, Schedule.recurs(2)) runs an initial source plus two repeats.
Ownership and lifetime
Construction starts no clock. Running the Fx repeatedly invokes the sink under
the schedule and completes when the schedule completes. Schedule failures are
forwarded as causes; interruption cancels waiting and stops further ticks. The
returned Fx retains the schedule’s Error and Env channels.
Examples
import { Schedule } from "effect"
import { collectAll, fromSchedule } from "@typed/fx/Fx"
const twoTicks = fromSchedule(Schedule.recurs(2))
const program = collectAll(twoTicks) // [undefined, undefined]Other public imports
These import paths expose the same declaration. Each page retains its own public name and signature.