跳过

抑制 Observable 发出的前 n 个项目

您可以忽略 Observable 发出的前 n 个项目,只关注之后发出的项目,方法是使用 Skip 运算符修改 Observable。

另请参阅

特定语言信息

待定

skip

在 RxGroovy 中,此运算符实现为 skip

示例代码

numbers = Observable.from([1, 2, 3, 4, 5, 6, 7, 8]);

numbers.skip(3).subscribe(
  { println(it); },                          // onNext
  { println("Error: " + it.getMessage()); }, // onError
  { println("Sequence complete"); }          // onCompleted
);
4
5
6
7
8
Sequence complete

这种 skip 变体默认情况下不会对任何特定 调度器 进行操作。

skip

还有一种 skip 变体,它接受一个时间持续时间,而不是项目数量。它会丢弃在源 Observable 生命周期的初始持续时间内发出的那些项目。您可以通过向 skip 传入时间长度和此长度的单位作为参数来设置此持续时间。

这种 skip 变体默认情况下会在 computation 调度器 上操作,但您也可以将您选择的调度器作为可选的第三个参数传入。

skip

在 RxJava 中,此运算符实现为 skip

这种 skip 变体默认情况下不会对任何特定 调度器 进行操作。

skip

还有一种 skip 变体,它接受一个时间持续时间,而不是项目数量。它会丢弃在源 Observable 生命周期的初始持续时间内发出的那些项目。您可以通过向 skip 传入时间长度和此长度的单位作为参数来设置此持续时间。

这种 skip 变体默认情况下会在 computation 调度器 上操作,但您也可以将您选择的调度器作为可选的第三个参数传入。

skip

RxJS 实现 skip 运算符。

示例代码

var source = Rx.Observable.range(0, 5)
    .skip(3);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 3
Next: 4
Completed

skip 位于以下每个发行版中

  • rx.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js
skipUntilWithTime

RxJS 还实现了一个 skipUntilWithTime 运算符,它不会从源 Observable 跳过特定数量的项目,而是根据时间顺序跳过项目。您可以通过向 skipUntilWithTime 传入参数来设置此跳过时间段,可以使用以下两种格式之一

一个数字
从源 Observable 跳过项目,直到从订阅 Observable 开始算起经过这么多毫秒
一个 Date
从源 Observable 跳过项目,直到达到此绝对时间

您也可以选择将 调度器 作为第二个参数传入,计时器将在该调度器上运行 (skipUntilWithTime 默认使用 timeout 调度器)。

示例代码

var source = Rx.Observable.timer(0, 1000)
    .skipUntilWithTime(5000);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 6
Next: 7
Next: 8
Completed

skipUntilWithTime 位于以下每个发行版中

  • rx.all.js
  • rx.all.compat.js
  • rx.time.js (需要 rx.jsrx.compat.js)
  • rx.lite.js
  • rx.lite.compat.js

待定

待定

RxPHP 将此运算符实现为 skip

示例代码

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/skip/skip.php

use Rx\Observable\ArrayObservable;

$observable = Rx\Observable::fromArray([1, 1, 2, 3, 5, 8, 13]);
$observable
    ->skip(3)
    ->subscribe($stdoutObserver);

   
Next value: 3
Next value: 5
Next value: 8
Next value: 13
Complete!
    

待定

待定

待定