【rxjs 5.x】filter操作子
6165 ワード
rxjs 5.x filter操作子api
debounce
ジッタを防ぐには、もう一つのObservableが値を送信するときのみ、ソースObervableの最新データを取って送信し、他のデータは送信をキャンセルする.
ジッタを防いで、しばらくの時間の内に、最新のデータだけを取って発射して、その他のデータは発射をキャンセルします.
重複した値を削除
連続して繰り返した値を削除します.
連続したもののうち、同じkey値を与えるvalueのものを除く.
指定された位置の要素のみを送信します.
カスタムフィルタルールは、該当する値を送信します.
最初の要素だけを出力します.
すべての値を無視して、一つも送信しません.
auditは、他のObservableが送信される前に、ソースObservableの値が無視され、他方のObservableが送信されるときに、ソースObservableから最新の値を送信し、上記の処理を繰り返す.
audiitTimeは、指定待ち時間内にソースObservableの値が無視され、終了後にソースObservableの最新値を送信し、上記の手順を繰り返す.
彼らとthrottleの違いは、最初の値の送信は、先に再送信を待つことであり、throttleは最初の値を発射してから待つことである.
ソースデータセットの最後の項目を返します.
他のObservableが値を送信するとき、ソースObservableデータセットから最新の値を送信する.
一定の時間間隔おきに、ソースObservableデータセットの最新値を送信する.
ソースObservableのデータセットが一つのデータ項目だけであれば、その項目を出力します.一つ以上のデータがあるとエラーが発生します.
ソースObservableのデータセットのn個のデータをスキップして、値を送信します.
ソースObservableの先頭の一連の値を無視して、別のObservableが送信値を開始するまで、ソースObservableから値を送信することができる.
ソースObservableの最初の一連の値を無視して、条件に合致するものがあるまで、ソースObservableのこの値から開始し、値の送信を開始する.
Observableオブジェクトが発行する前のn項目の値を取得するためには、取り終わったら終了します.
ソースObervableの逆数から最初の前方数までn個のデータを入手して送信します.先頭からのデータ項目は無視されます.
ソースObservableデータセットの第1項から送信が開始され、他のObservableが最初の値の送信を開始するまでソースObservableは送信値を停止する.
ソースObservableデータセットの最初のデータ項目から、条件に合致する最初のデータ項目に出会うまで、ソースObservableデータセットの送信を停止する.
ソースObservableデータセットがデータ項目を送信するたびに、別のObservable送信値を待っています.待ち時間にソースObservableの値は無視されて送信されません.他のObservableが値を送信したときにソースObservableの最新値を送信します.
ソースObservableのデータセットが一つのデータ項目を送信するたびに、n秒を待って、n秒後にソースObservableの最新値を出力します.
debounce
ジッタを防ぐには、もう一つのObservableが値を送信するときのみ、ソースObervableの最新データを取って送信し、他のデータは送信をキャンセルする.
// , ,
Rx.Observable.interval( 1000 )
.debounce(( ) => Rx.Observable.fromEvent(document, 'click'))
.subscribe(x => console.log( x ));
debounceTimeジッタを防いで、しばらくの時間の内に、最新のデータだけを取って発射して、その他のデータは発射をキャンセルします.
// ,
Rx.Observable.interval( 1000 )
.debounceTime( 500 )
.subscribe(x => console.log( x ))
distinct重複した値を削除
// , A,B,C,b
Rx.Observable.of('A', 'B', 'C', 'A', 'b', 'B')
.distinct( )
.subscribe( x => console.log( x ))
distinct Unitil Changd連続して繰り返した値を削除します.
// , A,B,A,B,A
Rx.Observable.of('A', 'B', 'B', 'A', 'B', 'A', 'A')
.distinctUntilChanged( )
.subscribe( x => console.log( x ))
distinctKeyUnitil Changd連続したもののうち、同じkey値を与えるvalueのものを除く.
let items = [
{ age: 4, name: 'Foo'},
{ age: 7, name: 'Bar'},
{ age: 5, name: 'Foo'},
{ age: 6, name: 'Foo'}
]
Rx.Observable.of( ...items )
.distinctUntilKeyChanged('name')
.subscribe( x => console.log( x ))
//
// { age: 4, name: 'Foo'}
// { age: 7, name: 'Bar'}
// { age: 5, name: 'Foo'}
ElemenntAt指定された位置の要素のみを送信します.
// 0 , ‘A’
Rx.Observable.of('A', 'B', 'B', 'A', 'B', 'A', 'A')
.elementAt( 3 )
.subscribe( x => console.log( x ))
Filterカスタムフィルタルールは、該当する値を送信します.
// :1,2,5,7,9,1
Rx.Observable.of(1,3,2,5,4,7,6,9,1)
.filter( x => x % 2 !== 0 )
.subscribe( x => console.log( x ))
ファースト最初の要素だけを出力します.
// , :1
Rx.Observable.of(1,3,2,5,4,7,6,9,1)
.first( )
.subscribe( x => console.log( x ))
ignoreelementすべての値を無視して、一つも送信しません.
//
Rx.Observable.of(1,3,2,5,4,7,6,9,1)
.ignoreElements( )
.subscribe( x => console.log( x ))
audit、audiit Timeauditは、他のObservableが送信される前に、ソースObservableの値が無視され、他方のObservableが送信されるときに、ソースObservableから最新の値を送信し、上記の処理を繰り返す.
audiitTimeは、指定待ち時間内にソースObservableの値が無視され、終了後にソースObservableの最新値を送信し、上記の手順を繰り返す.
彼らとthrottleの違いは、最初の値の送信は、先に再送信を待つことであり、throttleは最初の値を発射してから待つことである.
// auditTime
// 2,5,8,11,13...
Rx.Observable.interval( 1000 )
.auditTime( 2000 )
.subscribe( x => console.log( x ))
lastソースデータセットの最後の項目を返します.
// , :5
Rx.Observable.of(1,2,3,4,5)
.last( )
.subscribe( x => console.log( x ))
sample他のObservableが値を送信するとき、ソースObservableデータセットから最新の値を送信する.
//
Rx.Observable.interval( 1000 )
.sample( Rx.Observable.fromEvent( document, 'click' ))
.subscribe( x => console.log( x ))
sampleTime一定の時間間隔おきに、ソースObservableデータセットの最新値を送信する.
// 2 , 0,2,4,6,8....
Rx.Observable.interval( 1000 )
.sampleTime( 2000 )
.subscribe( x => console.log( x ))
singleソースObservableのデータセットが一つのデータ項目だけであれば、その項目を出力します.一つ以上のデータがあるとエラーが発生します.
// 1
Rx.Observable.of( 1 )
.single( )
.subscribe( x => console.log( x ))
skypソースObservableのデータセットのn個のデータをスキップして、値を送信します.
// 2 , 3,4
Rx.Observable.of(1,2,3,4)
.skip( 2 )
.subscribe( x => console.log( x ))
skyip UnitilソースObservableの先頭の一連の値を無視して、別のObservableが送信値を開始するまで、ソースObservableから値を送信することができる.
// 3 , , :2,3,4,5,6.....
Rx.Observable.interval( 1000 )
.skipUntil( Rx.Observable.of( 1 ).delay( 3000 ))
.subscribe( x => console.log( x ))
スカイプWhileソースObservableの最初の一連の値を無視して、条件に合致するものがあるまで、ソースObservableのこの値から開始し、値の送信を開始する.
// 4,5,3,2,1
Rx.Observable.of( 1, 2, 3, 4, 5, 3, 2, 1)
.skipWhile( x => x < 4 )
.subscribe( x => console.log( x ))
、take
Obervable , n , 。
// :0,1,2
Rx.Observable.interval( 1000 )
.take( 3 )
.subscribe( x => console.log( x ))
タカObservableオブジェクトが発行する前のn項目の値を取得するためには、取り終わったら終了します.
var source = Rx.Observable.interval(1000);
var example = source.take(3);
example.subscribe({
next: (value) => { console.log(value); },
error: (err) => { console.log('Error: ' + err); },
complete: () => { console.log('complete'); }
});
例のマーブル:source : -----0-----1-----2-----3--..
take(3)
example: -----0-----1-----2|
以上のコードを実行した後、コンソールの出力結果:0
1
2
complete
TaeLastソースObervableの逆数から最初の前方数までn個のデータを入手して送信します.先頭からのデータ項目は無視されます.
// 5,6,7
Rx.Observable.of( 1,2,3,4,5,6,7 )
.takeLast( 3 )
.subscribe( x => console.log( x ))
タカタUtilソースObservableデータセットの第1項から送信が開始され、他のObservableが最初の値の送信を開始するまでソースObservableは送信値を停止する.
// 3
Rx.Observable.interval( 1000 )
.takeUntil( Rx.Observable.of( 1 ).delay( 3000 ))
.subscribe( x => console.log( x ))
たかみWhileソースObservableデータセットの最初のデータ項目から、条件に合致する最初のデータ項目に出会うまで、ソースObservableデータセットの送信を停止する.
// :1,2,3
Rx.Observable.of( 1,2,3,4,3,2,1)
.takeWhile( x => x < 4 )
.subscribe( x => console.log( x ))
スロットルソースObservableデータセットがデータ項目を送信するたびに、別のObservable送信値を待っています.待ち時間にソースObservableの値は無視されて送信されません.他のObservableが値を送信したときにソースObservableの最新値を送信します.
// 0,3,6,9,12.....
// , ,
Rx.Observable.interval( 1000 )
.throttle( x => Rx.Observable.interval( 2000 ))
.subscribe( x => console.log( x ))
throttle TimeソースObservableのデータセットが一つのデータ項目を送信するたびに、n秒を待って、n秒後にソースObservableの最新値を出力します.
// 0,3,6,9,12.....
Rx.Observable.interval( 1000 )
.throttleTime( 2000 )
.subscribe( x => console.log( x ))