aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/util/executeSchedule.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/src/internal/util/executeSchedule.ts')
-rw-r--r--node_modules/rxjs/src/internal/util/executeSchedule.ts44
1 files changed, 44 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/util/executeSchedule.ts b/node_modules/rxjs/src/internal/util/executeSchedule.ts
new file mode 100644
index 0000000..1bcb990
--- /dev/null
+++ b/node_modules/rxjs/src/internal/util/executeSchedule.ts
@@ -0,0 +1,44 @@
+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;
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage