SkipWhile 订阅源可观察对象,但忽略其发射,直到您指定的某个条件变为假,此时 SkipWhile 开始镜像源可观察对象。
drop-while
待定
skipWhile
skipWhile 操作符返回一个可观察对象,该对象丢弃源可观察对象发出的项目,直到对源可观察对象发出的项目应用的函数返回 false 为止,此时新可观察对象发射该项目以及源可观察对象发出的其余项目。
false
numbers = Observable.from( [1, 2, 3, 4, 5, 6, 7, 8, 9] ); numbers.skipWhile({ (5 != it) }).subscribe( { println(it); }, // onNext { println("Error: " + it.getMessage()); }, // onError { println("Sequence complete"); } // onCompleted );
5 6 7 8 9 Sequence complete
skipWhile 默认情况下不会对任何特定的 调度器 进行操作。
skipWhile(Func1)
RxJS 实现 skipWhile 操作符。您向其传递一个控制跳过过程的函数。skipWhile 为源可观察对象发出的每个项目调用该函数,直到该函数返回 false 为止,此时 skipWhile 开始镜像源可观察对象(从该项目开始)。该函数采用三个参数
您可以选择向 skipWhile 传递第二个参数。如果是这样,该项目也将作为“this”提供给您的谓词函数。
this
var source = Rx.Observable.range(1, 5) .skipWhile(function (x) { return x < 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 Next: 5 Completed
skipWhile 位于以下每个发行版中
rx.js
rx.all.js
rx.all.compat.js
rx.compat.js
rx.lite.js
rx.lite.compat.js
SkipWhile
skipWhile skipWhileWithIndex
RxPHP 将此操作符实现为 skipWhile。
只要指定的条件为真,就跳过可观察序列中的元素,然后返回其余元素。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/skip/skipWhile.php $observable = Rx\Observable::range(1, 5) ->skipWhile(function ($x) { return $x < 3; }); $observable->subscribe($stdoutObserver);
Next value: 3 Next value: 4 Next value: 5 Complete!
RxPHP 还拥有一个 skipWhileWithIndex 操作符。
skipWhileWithIndex
只要指定的条件为真,就跳过可观察序列中的元素,然后返回其余元素。元素的索引用于谓词函数的逻辑中。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/skip/skipWhileWithIndex.php $observable = Rx\Observable::range(1, 5) ->skipWhileWithIndex(function ($i, $value) { return $i < 3; }); $observable->subscribe($stdoutObserver);
Next value: 4 Next value: 5 Complete!
skip_while
skip_while skip_while_with_index
dropWhile