RxJS delayWhen

2020-10-14 10:04 更新

將源的發(fā)射延遲可觀察到的時(shí)間間隔 由另一個(gè) Observable 的發(fā)射確定。

delayWhen<T>(delayDurationSelector: (value: T, index: number) => Observable<any>, subscriptionDelay?: Observable<any>): MonoTypeOperatorFunction<T>

參量

delayDurationSelector 一個(gè)功能 為源 Observable 發(fā)出的每個(gè)值返回一個(gè) Observable, 然后用于延遲該項(xiàng)目在輸出 Observable 上的發(fā)射 直到從此函數(shù)返回的 Observable 發(fā)出值為止。
subscriptionDelay 可選的。 默認(rèn)值為 undefined。  一個(gè)可觸發(fā)的  訂閱源 Observable 發(fā)出任何值后。

returns

MonoTypeOperatorFunction<T>:一個(gè)可觀察到的延遲排放源的方法 可觀察到的時(shí)間由以下條件返回: delayDurationSelector。

描述

就像 delay,但是時(shí)間跨度 延遲持續(xù)時(shí)間由第二個(gè) Observable 確定。

delayWhen marble diagram

delayWhen時(shí)間將源發(fā)出的每個(gè)發(fā)射值移動(dòng)一個(gè) 時(shí)間跨度由另一個(gè) Observable 確定。 當(dāng)源發(fā)出值時(shí), 該 delayDurationSelector函數(shù)以源值為 參數(shù),并且應(yīng)該返回一個(gè) Observable,稱為“持續(xù)時(shí)間” Observable。 僅當(dāng)持續(xù)時(shí)間為 Observable發(fā)出一個(gè)值或完成。 通知程序的完成觸發(fā)源值的發(fā)出 是不推薦使用的行為,并將在以后的版本中刪除。

(可選) delayWhen采用第二個(gè)參數(shù) subscriptionDelay,其中 是一個(gè)可觀察的。 當(dāng) subscriptionDelay發(fā)出其第一個(gè)值或 完成后,源 Observable 已訂閱并開始運(yùn)行 在上一段中描述。 如果 subscriptionDelay未提供, delayWhen輸出后將立即訂閱源 Observable 可觀察的已訂閱。

將每次點(diǎn)擊延遲隨機(jī)的時(shí)間,介于0到5秒之間

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


const clicks = fromEvent(document, 'click');
const delayedClicks = clicks.pipe(
  delayWhen(event => interval(Math.random() * 5000)),
);
delayedClicks.subscribe(x => console.log(x));

也可以看看

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)