2017-03-20 6 views

答えて

4

バッファカウント()

Observable.range(1, 55) 
    .bufferCount(10) 
    .map(arr => arr[arr.length - 1]) 
    .subscribe(val => console.log(val)); 

windowCount()

Observable.range(1, 55) 
    .windowCount(10) 
    .switchMap(window => window.takeLast(1)) 
    .subscribe(val => console.log(val)); 

デバウンス()

let source = Observable.range(1, 55).publish(); 

source 
    .debounce(val => debounceNotifier) 
    .subscribe(val => console.log(val)); 

let debounceNotifier = source 
    .bufferCount(10) 
    .publish(); 
debounceNotifier.connect(); 

source.connect(); 

スキャン()

Observable.range(1, 55) 
    .scan((acc, val) => { 
    if (acc.length === 10) { 
     acc = []; 
    } 
    acc.push(val); 
    return acc; 
    }, []) 
    .filter(acc => acc.length === 10) 
    .map(acc => acc[acc.length - 1]) 
    .subscribe(val => console.log(val)); 

scan()を使用している場合しかし、それは最後の値55を破棄しますよ。それらのすべてのための

参照のデモ:https://jsbin.com/yagayot/14/edit?js,console

+0

私はPlunkrを準備していたが、この答えはそれをすべて言います! :) – Maxime

+0

@martin、あなたは素晴らしいです!どうもありがとうございました! –

関連する問題