aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/observable/range.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/src/internal/observable/range.ts')
-rw-r--r--node_modules/rxjs/src/internal/observable/range.ts93
1 files changed, 93 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/observable/range.ts b/node_modules/rxjs/src/internal/observable/range.ts
new file mode 100644
index 0000000..cfc82cf
--- /dev/null
+++ b/node_modules/rxjs/src/internal/observable/range.ts
@@ -0,0 +1,93 @@
+import { SchedulerLike } from '../types';
+import { Observable } from '../Observable';
+import { EMPTY } from './empty';
+
+export function range(start: number, count?: number): Observable<number>;
+
+/**
+ * @deprecated The `scheduler` parameter will be removed in v8. Use `range(start, count).pipe(observeOn(scheduler))` instead. Details: Details: https://rxjs.dev/deprecations/scheduler-argument
+ */
+export function range(start: number, count: number | undefined, scheduler: SchedulerLike): Observable<number>;
+
+/**
+ * Creates an Observable that emits a sequence of numbers within a specified
+ * range.
+ *
+ * <span class="informal">Emits a sequence of numbers in a range.</span>
+ *
+ * ![](range.png)
+ *
+ * `range` operator emits a range of sequential integers, in order, where you
+ * select the `start` of the range and its `length`. By default, uses no
+ * {@link SchedulerLike} and just delivers the notifications synchronously, but may use
+ * an optional {@link SchedulerLike} to regulate those deliveries.
+ *
+ * ## Example
+ *
+ * Produce a range of numbers
+ *
+ * ```ts
+ * import { range } from 'rxjs';
+ *
+ * const numbers = range(1, 3);
+ *
+ * numbers.subscribe({
+ * next: value => console.log(value),
+ * complete: () => console.log('Complete!')
+ * });
+ *
+ * // Logs:
+ * // 1
+ * // 2
+ * // 3
+ * // 'Complete!'
+ * ```
+ *
+ * @see {@link timer}
+ * @see {@link interval}
+ *
+ * @param start The value of the first integer in the sequence.
+ * @param count The number of sequential integers to generate.
+ * @param scheduler A {@link SchedulerLike} to use for scheduling the emissions
+ * of the notifications.
+ * @return An Observable of numbers that emits a finite range of sequential integers.
+ */
+export function range(start: number, count?: number, scheduler?: SchedulerLike): Observable<number> {
+ if (count == null) {
+ // If one argument was passed, it's the count, not the start.
+ count = start;
+ start = 0;
+ }
+
+ if (count <= 0) {
+ // No count? We're going nowhere. Return EMPTY.
+ return EMPTY;
+ }
+
+ // Where the range should stop.
+ const end = count + start;
+
+ return new Observable(
+ scheduler
+ ? // The deprecated scheduled path.
+ (subscriber) => {
+ let n = start;
+ return scheduler.schedule(function () {
+ if (n < end) {
+ subscriber.next(n++);
+ this.schedule();
+ } else {
+ subscriber.complete();
+ }
+ });
+ }
+ : // Standard synchronous range.
+ (subscriber) => {
+ let n = start;
+ while (n < end && !subscriber.closed) {
+ subscriber.next(n++);
+ }
+ subscriber.complete();
+ }
+ );
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage