codecamp

RxJS windowWhen

使用来将源 Observable 值分支为嵌套 Observable 关闭 Observables 的工厂功能,以确定何时启动新的 窗口。

windowWhen<T>(closingSelector: () => Observable<any>): OperatorFunction<T, Observable<T>>

参量

关闭选择器 一个不需要 参数并返回一个Observable信号(在 nextcomplete)何时关闭上一个窗口并开始一个新窗口。

returns

OperatorFunction<T, Observable<T>>:可观察到的窗户 是可观察的。

描述

就像 bufferWhen,但发出嵌套 可观察的而不是数组。

windowWhen marble diagram

返回一个 Observable,它发出从源收集到的项目的窗口 可观察的。 输出 Observable 发出连接的非重叠窗口。 它发出当前窗口,并在可观察到的任何时候打开一个新窗口。 由指定 closingSelector函数产生的发射项。 首先 订阅输出 Observable 时,窗口将立即打开。

在 [1-5] 个随机秒的每个窗口中仅发出前两次单击事件

import { fromEvent, interval } from 'rxjs';
import { windowWhen, map, mergeAll, take } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowWhen(() => interval(1000 + Math.random() * 4000)),
  map(win => win.pipe(take(2))),     // each window has at most 2 emissions
  mergeAll()                         // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

也可以看看

RxJS windowToggle
RxJS withLatestFrom
温馨提示
下载编程狮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; }