RxJS observeOn
使用指定的调度程序从源 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
。 一个反模式将调用 observeOn
Observable,它会同步发出大量值,以进行拆分 排放成异步块。 为此,必须将调度程序传递到源中 直接可见(通常在创建它的操作员中可见)。 observeOn
只是延迟通知 多一点,以确保它们在预期的时刻发出。
实际上, observeOn
接受第二个参数,该参数指定以毫秒为单位的延迟通知 将被发射。 之间的主要区别 delay
和 observeOn
是 observeOn
将延迟所有通知-包括错误通知-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';
});