RxJS concatMapTo

2020-10-14 09:59 更新

將每個源值投影到相同的 Observable,將其合并為多個 在輸出 Observable 上以序列化的方式排列次。

concatMapTo<T, R, O extends ObservableInput<any>>(innerObservable: O, resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R): OperatorFunction<T, ObservedValueOf<O> | R>

參量

內(nèi)部可觀察 一個 Observable 來替換來自 來源可觀察。
resultSelector 可選的。 默認值為 undefined。         類型: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R

returns

OperatorFunction<T, ObservedValueOf<O> | R>:通過加入 對于每個發(fā)射的值,一個接一個地通過觀察 從源頭上

描述

就像 concatMap,但是映射每個值 始終在同一個內(nèi)部 Observable 中。

concatMapTo marble diagram

映射的每個源值給定的可觀測 innerObservable無論 源值的一半,然后將那些所得的 Observables 統(tǒng)一為一個 single Observable,這是輸出 Observable。 每個新 innerObservable 在輸出 Observable 上發(fā)出的實例與前一個串聯(lián) innerObservable實例。

警告: 如果源值無休止地到達并且比它們更快地到達 相應(yīng)的內(nèi)部 Observables 可以完成,這將導(dǎo)致內(nèi)存問題 當內(nèi)部 Observable 聚集在一個無界緩沖區(qū)中時,它們等待轉(zhuǎn)向 被訂閱。

注意: concatMapTo等效于 mergeMapTo并發(fā)參數(shù) 設(shè)置為 1

對于每個單擊事件,請從0到3每秒進行一次滴答,無需并發(fā)

import { fromEvent, interval } from 'rxjs';
import { concatMapTo, take } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  concatMapTo(interval(1000).pipe(take(4))),
);
result.subscribe(x => console.log(x));


// Results in the following:
// (results are not concurrent)
// For every click on the "document" it will emit values 0 to 3 spaced
// on a 1000ms interval
// one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3

超載

concatMapTo(observable: O): OperatorFunction<T, ObservedValueOf<O>>

參量 類型
可觀察的 類型: O

returns OperatorFunction<T, ObservedValueOf<O>>

concatMapTo(observable: O, resultSelector: undefined): OperatorFunction<T, ObservedValueOf<O>>

參量 類型
可觀察的 類型: O。
resultSelector 類型: undefined

returns OperatorFunction<T, ObservedValueOf<O>>

concatMapTo(observable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R): OperatorFunction<T, R>

參量 類型
可觀察的 類型: O
resultSelector 類型: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R

returns OperatorFunction<T, R>

也可以看看

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號