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/operators/subscribeOn.ts | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/subscribeOn.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/operators/subscribeOn.ts | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/subscribeOn.ts b/node_modules/rxjs/src/internal/operators/subscribeOn.ts new file mode 100644 index 0000000..17240d0 --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/subscribeOn.ts @@ -0,0 +1,67 @@ +import { MonoTypeOperatorFunction, SchedulerLike } from '../types'; +import { operate } from '../util/lift'; + +/** + * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}. + * + * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to. + * + * Schedulers control the speed and order of emissions to observers from an Observable stream. + * + *  + * + * ## Example + * + * Given the following code: + * + * ```ts + * import { of, merge } from 'rxjs'; + * + * const a = of(1, 2, 3); + * const b = of(4, 5, 6); + * + * merge(a, b).subscribe(console.log); + * + * // Outputs + * // 1 + * // 2 + * // 3 + * // 4 + * // 5 + * // 6 + * ``` + * + * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to. + * + * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`: + * + * ```ts + * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs'; + * + * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler)); + * const b = of(4, 5, 6); + * + * merge(a, b).subscribe(console.log); + * + * // Outputs + * // 4 + * // 5 + * // 6 + * // 1 + * // 2 + * // 3 + * ``` + * + * The reason for this is that Observable `b` emits its values directly and synchronously like before + * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable. + * + * @param scheduler The {@link SchedulerLike} to perform subscription actions on. + * @param delay A delay to pass to the scheduler to delay subscriptions + * @return A function that returns an Observable modified so that its + * subscriptions happen on the specified {@link SchedulerLike}. + */ +export function subscribeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T> { + return operate((source, subscriber) => { + subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay)); + }); +} |
