You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.9 KiB
51 lines
1.9 KiB
/** |
|
* 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 {@link Action}. |
|
* |
|
* ```ts |
|
* class Scheduler { |
|
* now(): number; |
|
* schedule(work, delay?, state?): Subscription; |
|
* } |
|
* ``` |
|
* |
|
* @class Scheduler |
|
*/ |
|
export var Scheduler = /*@__PURE__*/ (/*@__PURE__*/ function () { |
|
function Scheduler(SchedulerAction, now) { |
|
if (now === void 0) { |
|
now = Scheduler.now; |
|
} |
|
this.SchedulerAction = SchedulerAction; |
|
this.now = now; |
|
} |
|
/** |
|
* 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 {function(state: ?T): ?Subscription} work A function representing a |
|
* task, or some unit of work to be executed by the Scheduler. |
|
* @param {number} [delay] Time to wait before executing the work, where the |
|
* time unit is implicit and defined by the Scheduler itself. |
|
* @param {T} [state] Some contextual data that the `work` function uses when |
|
* called by the Scheduler. |
|
* @return {Subscription} A subscription in order to be able to unsubscribe |
|
* the scheduled work. |
|
*/ |
|
Scheduler.prototype.schedule = function (work, delay, state) { |
|
if (delay === void 0) { |
|
delay = 0; |
|
} |
|
return new this.SchedulerAction(this, work).schedule(state, delay); |
|
}; |
|
Scheduler.now = Date.now ? Date.now : function () { return +new Date(); }; |
|
return Scheduler; |
|
}()); |
|
//# sourceMappingURL=Scheduler.js.map
|
|
|