diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/Scheduler.ts | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/Scheduler.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/Scheduler.ts | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/Scheduler.ts b/node_modules/rxjs/src/internal/Scheduler.ts new file mode 100644 index 0000000..0c3d6b6 --- /dev/null +++ b/node_modules/rxjs/src/internal/Scheduler.ts @@ -0,0 +1,60 @@ +import { Action } from './scheduler/Action'; +import { Subscription } from './Subscription'; +import { SchedulerLike, SchedulerAction } from './types'; +import { dateTimestampProvider } from './scheduler/dateTimestampProvider'; + +/** + * An execution context and a data structure to order tasks and schedule their + * execution. Provides a notion of (potentially virtual) time, through the + * `now()` getter method. + * + * Each unit of work in a Scheduler is called an `Action`. + * + * ```ts + * class Scheduler { + * now(): number; + * schedule(work, delay?, state?): Subscription; + * } + * ``` + * + * @deprecated Scheduler is an internal implementation detail of RxJS, and + * should not be used directly. Rather, create your own class and implement + * {@link SchedulerLike}. Will be made internal in v8. + */ +export class Scheduler implements SchedulerLike { + public static now: () => number = dateTimestampProvider.now; + + constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) { + this.now = now; + } + + /** + * A getter method that returns a number representing the current time + * (at the time this function was called) according to the scheduler's own + * internal clock. + * @return A number that represents the current time. May or may not + * have a relation to wall-clock time. May or may not refer to a time unit + * (e.g. milliseconds). + */ + public now: () => number; + + /** + * Schedules a function, `work`, for execution. May happen at some point in + * the future, according to the `delay` parameter, if specified. May be passed + * some context object, `state`, which will be passed to the `work` function. + * + * The given arguments will be processed an stored as an Action object in a + * queue of actions. + * + * @param work A function representing a task, or some unit of work to be + * executed by the Scheduler. + * @param delay Time to wait before executing the work, where the time unit is + * implicit and defined by the Scheduler itself. + * @param state Some contextual data that the `work` function uses when called + * by the Scheduler. + * @return A subscription in order to be able to unsubscribe the scheduled work. + */ + public schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay: number = 0, state?: T): Subscription { + return new this.schedulerActionCtor<T>(this, work).schedule(state, delay); + } +} |
