internal/operators/mergeMap.js
/**
 * Projects each source value to an Observable which is merged in the output
 * Observable.
 *
 * <span class="informal">Maps each value to an Observable, then flattens all of
 * these inner Observables using {@link mergeAll}.</span>
 *
 * <img src="./img/mergeMap.png" width="100%">
 *
 * Returns an Observable that emits items based on applying a function that you
 * supply to each item emitted by the source Observable, where that function
 * returns an Observable, and then merging those resulting Observables and
 * emitting the results of this merger.
 *
 * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>
 * var letters = Rx.Observable.of('a', 'b', 'c');
 * var result = letters.mergeMap(x =>
 *   Rx.Observable.interval(1000).map(i => x+i)
 * );
 * result.subscribe(x => console.log(x));
 *
 * // Results in the following:
 * // a0
 * // b0
 * // c0
 * // a1
 * // b1
 * // c1
 * // continues to list a,b,c with respective ascending integers
 *
 * @see {@link concatMap}
 * @see {@link exhaustMap}
 * @see {@link merge}
 * @see {@link mergeAll}
 * @see {@link mergeMapTo}
 * @see {@link mergeScan}
 * @see {@link switchMap}
 *
 * @param {function(value: T, ?index: number): ObservableInput} project A function
 * that, when applied to an item emitted by the source Observable, returns an
 * Observable.
 * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input
 * Observables being subscribed to concurrently.
 * @return {Observable} An Observable that emits the result of applying the
 * projection function (and the optional `resultSelector`) to each item emitted
 * by the source Observable and merging the results of the Observables obtained
 * from this transformation.
 * @method mergeMap
 * @owner Observable
 */
Projects each source value to an Observable which is merged in the output
Observable.

Maps each value to an Observable, then flattens all of
these inner Observables using  mergeAll.



Returns an Observable that emits items based on applying a function that you
supply to each item emitted by the source Observable, where that function
returns an Observable, and then merging those resulting Observables and
emitting the results of this merger.



Results in the following:
a0
b0
c0
a1
b1
c1
continues to list a,b,c with respective ascending integers



@param {function(value: T, ?index: number): ObservableInput} project A function
that, when applied to an item emitted by the source Observable, returns an
Observable.
@param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input
Observables being subscribed to concurrently.
@return {Observable} An Observable that emits the result of applying the
projection function (and the optional `resultSelector`) to each item emitted
by the source Observable and merging the results of the Observables obtained
from this transformation.
@method mergeMap
@owner Observable
Projects each source value to an Observable which is merged in the output Observable . Maps each value to an Observable then flattens all of these inner Observables using mergeAll . Returns an Observable that emits items based on applying a function that you supply to each item emitted by the source Observable where that function returns an Observable and then merging those resulting Observables and emitting the results of this merger . Results in the following : a0 b0 c0 a1 b1 c1 continues to list a b c with respective ascending integers @param { function ( value : T ?index : number ) : ObservableInput } project A function that when applied to an item emitted by the source Observable returns an Observable . @param { number } [ concurrent = Number . POSITIVE_INFINITY ] Maximum number of input Observables being subscribed to concurrently . @return { Observable } An Observable that emits the result of applying the projection function ( and the optional ` resultSelector ` ) to each item emitted by the source Observable and merging the results of the Observables obtained from this transformation . @method mergeMap @owner Observable
function mergeMap(project, concurrent) {
    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }
    return function mergeMapOperatorFunction(source) {
        return source.lift(new MergeMapOperator(project, concurrent));
    };
}
function mergeMap ( project , concurrent ) { if ( concurrent === void 0 ) { concurrent = Number . POSITIVE_INFINITY ; } return function mergeMapOperatorFunction ( source ) { return source . lift ( new MergeMapOperator ( project , concurrent ) ) ; } ; }
Projects each source value to an Observable which is merged in the output
 Observable.
Projects each source value to an Observable which is merged in the output Observable .