RxJS observeOn

2020-10-14 10:26 更新

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

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

參量

調(diào)度器 計(jì)劃程序,將用于重新計(jì)劃來(lái)自源 Observable 的通知。
延遲 可選的。 默認(rèn)值為 0。         指出應(yīng)重新安排每個(gè)通知的延遲時(shí)間的毫秒數(shù)。

returns

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

描述

確保從 Observable 外部使用特定的調(diào)度程序。

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

返回的 Observable 發(fā)出與源 Observable 相同的通知(下一個(gè)值,完成和錯(cuò)誤事件), 但已使用提供的計(jì)劃程序進(jìn)行了重新計(jì)劃。 請(qǐng)注意,這并不意味著源 Observables 內(nèi)部 調(diào)度程序?qū)⒁匀魏畏绞教鎿Q。 仍將使用原始調(diào)度程序,但是當(dāng)源 Observable 發(fā)出時(shí) 通知,它將立即再次進(jìn)行安排-這次將 Scheduler 傳遞給 observeOn。 一個(gè)反模式將調(diào)用 observeOnObservable,它會(huì)同步發(fā)出大量值,以進(jìn)行拆分 排放成異步塊。 為此,必須將調(diào)度程序傳遞到源中 直接可見(jiàn)(通常在創(chuàng)建它的操作員中可見(jiàn))。 observeOn只是延遲通知 多一點(diǎn),以確保它們?cè)陬A(yù)期的時(shí)刻發(fā)出。

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

確保在重新繪制瀏覽器之前調(diào)用 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';
});

也可以看看

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)