1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import { Subscription } from '../Subscription';
- import { SchedulerAction, SchedulerLike } from '../types';
- export function executeSchedule(
- parentSubscription: Subscription,
- scheduler: SchedulerLike,
- work: () => void,
- delay: number,
- repeat: true
- ): void;
- export function executeSchedule(
- parentSubscription: Subscription,
- scheduler: SchedulerLike,
- work: () => void,
- delay?: number,
- repeat?: false
- ): Subscription;
- export function executeSchedule(
- parentSubscription: Subscription,
- scheduler: SchedulerLike,
- work: () => void,
- delay = 0,
- repeat = false
- ): Subscription | void {
- const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) {
- work();
- if (repeat) {
- parentSubscription.add(this.schedule(null, delay));
- } else {
- this.unsubscribe();
- }
- }, delay);
- parentSubscription.add(scheduleSubscription);
- if (!repeat) {
- // Because user-land scheduler implementations are unlikely to properly reuse
- // Actions for repeat scheduling, we can't trust that the returned subscription
- // will control repeat subscription scenarios. So we're trying to avoid using them
- // incorrectly within this library.
- return scheduleSubscription;
- }
- }
|