Home Manual Reference Source Test Repository

es6/Scheduler.js

/**
 * 用来安排任务并调度执行的执行上下文和数据结构。通过获取方法 `now()` 提供
 * 虚拟时间的概念。
 *
 * 调度器的每个工作单元被称为 {@link Action}.
 *
 * ```ts
 * class Scheduler {
 *   now(): number;
 *   schedule(work, delay?, state?): Subscription;
 * }
 * ```
 *
 * @class Scheduler
 */
export class Scheduler {
    constructor(SchedulerAction, now = Scheduler.now) {
        this.SchedulerAction = SchedulerAction;
        this.now = now;
    }
    /**
     * 调度并执行 `work` 函数。如果指定了 `delay` 参数,那么根据此参数可能会在未来某个时间点发生。
     * 可以传递一些上下文对象,`state`,该对象将会被传递给 `work` 函数。
     * 给定的参数将作为一个动作对象存储在一个行动队列。
     *
     * @param {function(state: ?T): ?Subscription} work 代表任务的函数,或者某些可以被调度器执行
     * 的工作单元。
     * @param {number} [delay] 在执行任务之前的等待时间,时间单位是隐式的,由调度器本身定义。
     * @param {T} [state] 当调度器调用 `work` 函数时使用时的一些上下文数据。
     * @return {Subscription} 该 subscription 是为了能够退订已调度工作。
     */
    schedule(work, delay = 0, state) {
        return new this.SchedulerAction(this, work).schedule(state, delay);
    }
}
Scheduler.now = Date.now ? Date.now : () => +new Date();
//# sourceMappingURL=Scheduler.js.map