RxJS delayWhen

2020-10-14 10:04 更新

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

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

參量

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

returns

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

描述

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

delayWhen marble diagram

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

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

將每次點擊延遲隨機的時間,介于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));

也可以看看

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號