RxJS expand

2020-10-14 10:11 更新

遞歸地將每個(gè)源值投影到一個(gè) Observable,將其合并到輸出 Observable 中。

expand<T, R>(project: (value: T, index: number) => any, concurrent: number = Number.POSITIVE_INFINITY, scheduler: SchedulerLike = undefined): OperatorFunction<T, R>

參量

項(xiàng)目 當(dāng)應(yīng)用于源或輸出 Observable 發(fā)出的項(xiàng)目時(shí),返回 Observable的函數(shù)。
同時(shí) 可選的。默認(rèn)值為Number.POSITIVE_INFINITY。并發(fā)訂閱的最大輸入 Observable 數(shù)。
調(diào)度器 可選的。默認(rèn)值為undefined。在SchedulerLike使用用于訂閱每個(gè)投影內(nèi)觀察到。

returns

OperatorFunction<T, R>:一個(gè) Observable,它發(fā)出源值,并且還會(huì)對(duì)輸出 Observable 上發(fā)出的每個(gè)值應(yīng)用投影函數(shù),并合并從此變換獲得的 Observables 的結(jié)果。

描述

它類(lèi)似于mergeMap,但是將投影函數(shù)應(yīng)用于每個(gè)源值以及每個(gè)輸出值。它是遞歸的。

展開(kāi)大理石圖

返回一個(gè) Observable,它基于將您提供的函數(shù)應(yīng)用于源 Observable 發(fā)出的每個(gè)項(xiàng)目而發(fā)出項(xiàng)目,該函數(shù)返回 Observable,然后合并這些結(jié)果 Observables 并發(fā)出此合并的結(jié)果。擴(kuò)展將在輸出 Observable 上重新發(fā)射每個(gè)源值。然后,將每個(gè)輸出值提供給該project函數(shù),該 函數(shù)返回一個(gè)內(nèi)部 Observable,以將其合并到輸出 Observable 中。由投影得出的那些輸出值也被賦予project函數(shù)以產(chǎn)生新的輸出值。這是 擴(kuò)展遞歸行為的方式。

每次點(diǎn)擊就開(kāi)始發(fā)出 2 的冪,最多 10 次

import { fromEvent, of } from 'rxjs';
import { expand, mapTo, delay, take } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const powersOfTwo = clicks.pipe(
  mapTo(1),
  expand(x => of(2 * x).pipe(delay(1000))),
  take(10),
);
powersOfTwo.subscribe(x => console.log(x));

也可以看看

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)