RxJS observeOn

2020-10-14 10:26 更新

使用指定的調度程序從源 Observable 重新發(fā)出所有通知。

observeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T>

參量

調度器 計劃程序,將用于重新計劃來自源 Observable 的通知。
延遲 可選的。 默認值為 0。         指出應重新安排每個通知的延遲時間的毫秒數。

returns

MonoTypeOperatorFunction<T>:發(fā)出與源 Observable 相同的通知的 Observable, 但提供了調度程序。

描述

確保從 Observable 外部使用特定的調度程序。

observeOn是一個接受調度程序作為第一個參數的運算符,該參數將用于重新調度 源 Observable 發(fā)出的通知。 如果您無法控制,這可能會很有用 給定 Observabl e的內部調度程序,但仍想控制何時發(fā)出其值。

返回的 Observable 發(fā)出與源 Observable 相同的通知(下一個值,完成和錯誤事件), 但已使用提供的計劃程序進行了重新計劃。 請注意,這并不意味著源 Observables 內部 調度程序將以任何方式替換。 仍將使用原始調度程序,但是當源 Observable 發(fā)出時 通知,它將立即再次進行安排-這次將 Scheduler 傳遞給 observeOn。 一個反模式將調用 observeOnObservable,它會同步發(fā)出大量值,以進行拆分 排放成異步塊。 為此,必須將調度程序傳遞到源中 直接可見(通常在創(chuàng)建它的操作員中可見)。 observeOn只是延遲通知 多一點,以確保它們在預期的時刻發(fā)出。

實際上, observeOn接受第二個參數,該參數指定以毫秒為單位的延遲通知 將被發(fā)射。 之間的主要區(qū)別 delayobserveOnobserveOn 將延遲所有通知-包括錯誤通知-Simultaneously delay會通過錯誤 從源發(fā)出后立即可觀察。 通常,強烈建議使用 delay運算符 用于流中值的任何類型的延遲,Simultaneously observeOn用于指定應使用哪個調度程序 一般用于通知排放。

確保在重新繪制瀏覽器之前調用 subscribe 中的值。

import { interval } from 'rxjs';
import { observeOn } from 'rxjs/operators';


const intervals = interval(10);                // Intervals are scheduled
                                               // with async scheduler by default...
intervals.pipe(
  observeOn(animationFrameScheduler),          // ...but we will observe on animationFrame
)                                              // scheduler to ensure smooth animation.
.subscribe(val => {
  someDiv.style.height = val + 'px';
});

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號