UNPKG

@reactivex/rxjs

Version:

Reactive Extensions for modern JavaScript

117 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Observable_1 = require("../Observable"); var subscribeTo_1 = require("../util/subscribeTo"); var scheduled_1 = require("../scheduled/scheduled"); /** * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object. * * <span class="informal">Converts almost anything to an Observable.</span> * * ![](from.png) * * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an * <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable" target="_blank">iterable</a> * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be * converted through this operator. * * ## Examples * * ### Converts an array to an Observable * * ```ts * import { from } from 'rxjs'; * * const array = [10, 20, 30]; * const result = from(array); * * result.subscribe(x => console.log(x)); * * // Logs: * // 10 * // 20 * // 30 * ``` * * --- * * ### Convert an infinite iterable (from a generator) to an Observable * * ```ts * import { from } from 'rxjs'; * import { take } from 'rxjs/operators'; * * function* generateDoubles(seed) { * let i = seed; * while (true) { * yield i; * i = 2 * i; // double it * } * } * * const iterator = generateDoubles(3); * const result = from(iterator).pipe(take(10)); * * result.subscribe(x => console.log(x)); * * // Logs: * // 3 * // 6 * // 12 * // 24 * // 48 * // 96 * // 192 * // 384 * // 768 * // 1536 * ``` * * --- * * ### With async scheduler * * ```ts * import { from, asyncScheduler } from 'rxjs'; * * console.log('start'); * * const array = [10, 20, 30]; * const result = from(array, asyncScheduler); * * result.subscribe(x => console.log(x)); * * console.log('end'); * * // Logs: * // start * // end * // 10 * // 20 * // 30 * ``` * * @see {@link fromEvent} * @see {@link fromEventPattern} * * @param {ObservableInput<T>} A subscription object, a Promise, an Observable-like, * an Array, an iterable, or an array-like object to be converted. * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values. * @return {Observable<T>} * @name from * @owner Observable */ function from(input, scheduler) { if (!scheduler) { if (input instanceof Observable_1.Observable) { return input; } return new Observable_1.Observable(subscribeTo_1.subscribeTo(input)); } else { return scheduled_1.scheduled(input, scheduler); } } exports.from = from; //# sourceMappingURL=from.js.map