RxJS observeOn

2020-10-14 10:26 更新

使用指定的调度程序从源 Observable 重新发出所有通知。

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

参量

调度器 计划程序,将用于重新计划来自源 Observable 的通知。
延迟 可选的。 默认值为 0。         指出应重新安排每个通知的延迟时间的毫秒数。

returns

MonoTypeOperatorFunction<T>:发出与源 Observable 相同的通知的 Observable, 但提供了调度程序。

描述

确保从 Observable 外部使用特定的调度程序。

observeOn是一个接受调度程序作为第一个参数的运算符,该参数将用于重新调度 源 Observable 发出的通知。 如果您无法控制,这可能会很有用 给定 Observabl e的内部调度程序,但仍想控制何时发出其值。

返回的 Observable 发出与源 Observable 相同的通知(下一个值,完成和错误事件), 但已使用提供的计划程序进行了重新计划。 请注意,这并不意味着源 Observables 内部 调度程序将以任何方式替换。 仍将使用原始调度程序,但是当源 Observable 发出时 通知,它将立即再次进行安排-这次将 Scheduler 传递给 observeOn。 一个反模式将调用 observeOnObservable,它会同步发出大量值,以进行拆分 排放成异步块。 为此,必须将调度程序传递到源中 直接可见(通常在创建它的操作员中可见)。 observeOn只是延迟通知 多一点,以确保它们在预期的时刻发出。

实际上, observeOn接受第二个参数,该参数指定以毫秒为单位的延迟通知 将被发射。 之间的主要区别 delayobserveOnobserveOn 将延迟所有通知-包括错误通知-Simultaneously delay会通过错误 从源发出后立即可观察。 通常,强烈建议使用 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

公众号
微信公众号

编程狮公众号