codecamp

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。 一个反模式将调用 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';
});

也可以看看

RxJS multicast
RxJS onErrorResumeNext
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

RxJS operators

RxJS fetch

RxJS testing

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }