variable / @typed/fx/Fx

fromSchedule

Creates an Fx that emits values according to a Schedule. The Fx emits void each time the schedule fires.

Package version
2.0.0-beta.13
Category
Time and rate
Since
1.0.0

Follow one execution

Effect.schedule uses this recurrence schedule for two void deliveries, then completes; schedule outputs are not payloads.

Fx timelinefromSchedule(Schedule.recurs(2))fromSchedule
OperatorfromSchedule(Schedule.recurs(2))
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.

Source implementation · Learn the surrounding model

Compare all Fx timelines →

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.

Source