Skip to content

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