Skip to content
Effect 4.0 is here. One ecosystem. Zero dependencies.

Scheduler

14 exports Since 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;
}
Since v2.0.0

Signature

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

Signature

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

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;
}
Since v2.0.0

Signature

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

Signature

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

Models

Scheduler

interface
Since v2.0.0

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
Since v2.0.0

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;
}