codecamp

RxJS skipUntil

返回一个 Observable,它跳过源 Observable 发出的项目,直到第二个 Observable 发出一项为止。

skipUntil<T>(notifier: Observable<any>):MonoTypeOperatorFunction<T>

参量

通知者 第二个 Observable 必须在源 Observable 的元素开始被生成的 Observable 镜像之前发射一个项目。

returns

MonoTypeOperatorFunction<T>:一个 Observable,它从源 Observable 跳过项目,直到第二个 Observable 发射一个项目,然后发射其余项目。

描述

skipUntil操作者使可观察到的流,以跳过值的发射,直至通过在可观察到的发射的第一个值。与用户交互, http 请求的响应或等待特定时间一起使用时,此功能特别有用。

skipUntil大理石图

在内部,skipUntil运算符订阅传入的 observable(在以下称为 notifier),以便识别其第一个值的发出。发生这种情况时,操作员将退订通知者,并开始发出 可观察到的值。如果通知程序完成或引发错误而之前未发出任何值,则它将永远不会让可观察的发出任何值。

在以下示例中,将跳过所有可观察到的时间间隔的发射值,直到用户单击页面中的任何位置为止。

import { interval, fromEvent } from 'rxjs';
import { skipUntil } from 'rxjs/operators';


const intervalObservable = interval(1000);
const click = fromEvent(document, 'click');


const emitAfterClick = intervalObservable.pipe(
  skipUntil(click)
);
// clicked at 4.6s. output: 5...6...7...8........ or
// clicked at 7.3s. output: 8...9...10..11.......
const subscribe = emitAfterClick.subscribe(value => console.log(value));
RxJS skipLast
RxJS skipWhile
温馨提示
下载编程狮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; }