Skip to content
Effect Days 2026 Get your ticket

Scheduler

14 exports Added in v2.0.0 Source

Constructors

Signature

declare class ControlledScheduler implements Scheduler {
constructor();
deferred: boolean;
tasks: PriorityBuckets<Task>;
scheduleTask(task: Task, priority: number, fiber?: RuntimeFiber<unknown, unknown>): void;
shouldYield(fiber: RuntimeFiber<unknown, unknown>): number | false;
step(): void;
}

make

Added in v2.0.0 Source

Signature

declare function make(scheduleTask: (task: Task, priority: number, fiber?: RuntimeFiber<unknown, unknown>) => void, shouldYield: (fiber: RuntimeFiber<unknown, unknown>) => number | false): Scheduler

makeBatched

Added in v2.0.0 Source

Signature

declare function makeBatched(callback: (runBatch: () => void) => void, shouldYield: (fiber: RuntimeFiber<unknown, unknown>) => number | false): Scheduler

makeMatrix

Added in v2.0.0 Source

Signature

declare function makeMatrix(...record: Array<[number, Scheduler]>): Scheduler

Signature

declare class MixedScheduler implements Scheduler {
constructor(maxNextTickBeforeTimer: number);
readonly maxNextTickBeforeTimer: number;
scheduleTask(task: Task, priority: number, fiber?: RuntimeFiber<unknown, unknown>): void;
shouldYield(fiber: RuntimeFiber<unknown, unknown>): number | false;
}

Signature

declare class SyncScheduler implements Scheduler {
constructor();
deferred: boolean;
tasks: PriorityBuckets<Task>;
flush(): void;
scheduleTask(task: Task, priority: number, fiber?: RuntimeFiber<unknown, unknown>): void;
shouldYield(fiber: RuntimeFiber<unknown, unknown>): number | false;
}

timer

Added in v2.0.0 Source

Signature

declare function timer(ms: number, shouldYield: (fiber: RuntimeFiber<unknown, unknown>) => number | false): Scheduler

timerBatched

Added in v2.0.0 Source

Signature

declare function timerBatched(ms: number, shouldYield: (fiber: RuntimeFiber<unknown, unknown>) => number | false): Scheduler

Models

Scheduler interface

Added in v2.0.0 Source

Signature

interface Scheduler {
scheduleTask(task: Task, priority: number, fiber?: RuntimeFiber<unknown, unknown>): void;
shouldYield(fiber: RuntimeFiber<unknown, unknown>): number | false;
}

Signature

declare class SchedulerRunner {
constructor(scheduleDrain: (depth: number, drain: (depth: number) => void) => void);
running: boolean;
readonly scheduleDrain: (depth: number, drain: (depth: number) => void) => void;
tasks: PriorityBuckets<Task>;
scheduleTask(task: Task, priority: number): void;
static cached(scheduleDrain: (depth: number, drain: (depth: number) => void) => void): (fiber?: RuntimeFiber<unknown, unknown>) => SchedulerRunner;
}

Task type

Added in v2.0.0 Source

Signature

type Task = () => void

Schedulers

Signature

declare const defaultScheduler: Scheduler

Utilities

Signature

declare const defaultShouldYield: Scheduler["shouldYield"]

Utils

Signature

declare class PriorityBuckets<in out T = Task> {
constructor<in out T = Task>();
buckets: Array<[number, Array<T>]>;
scheduleTask(task: T, priority: number): void;
}