您可以忽略 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
變體預設不會在任何特定的 Scheduler 上運作。
skip(int)
還有一個 skip
的變體,它接受時間長度而不是項目數量。 它會捨棄在來源 Observable 生命週期的初始時間長度內發射的項目。 您可以透過傳入時間長度和此時間長度所使用的時間單位作為 skip
的參數來設定此時間長度。
這個 skip
變體預設在 computation
Scheduler 上運作,但您也可以傳入您選擇的 Scheduler 作為第三個選用參數。
skip(long,TimeUnit)
skip(long,TimeUnit,Scheduler)
在 RxJava 中,此運算子以 skip
實作。
這個 skip
變體預設不會在任何特定的 Scheduler 上運作。
skip(int)
還有一個 skip
的變體,它接受時間長度而不是項目數量。 它會捨棄在來源 Observable 生命週期的初始時間長度內發射的項目。 您可以透過傳入時間長度和此時間長度所使用的時間單位作為 skip
的參數來設定此時間長度。
這個 skip
變體預設在 computation
Scheduler 上運作,但您也可以傳入您選擇的 Scheduler 作為第三個選用參數。
skip(long,TimeUnit)
skip(long,TimeUnit,Scheduler)
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
RxJS 還實作了 skipUntilWithTime
運算子,它不會跳過來源 Observable 的特定項目數量,而是根據時間順序跳過項目。 您可以透過傳入以下格式的參數給 skipUntilWithTime
來設定此跳過期間
Date
您也可以選擇性地傳入一個 Scheduler 作為第二個參數,計時器將在該 Scheduler 上運作 (skipUntilWithTime
預設使用 timeout
Scheduler)。
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.js
或 rx.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!
待定
待定
待定