我想我不明白sample
和throttle
之间的区别。
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-sample
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-throttle
他们都习惯于沉默可观。示例使用notifier
发出值并使用限制使用函数来确定它应忽略值的时间长度?
那是对的吗?
在以下示例中:
//emit value every 1 second
const source = Rx.Observable.interval(1000);
节流:
//throttle for 2 seconds, emit latest value
const throttle = source.throttle(val => Rx.Observable.interval(2000));
//output: 0...3...6...9
throttle.subscribe(val => console.log(val));
样品:
//sample last emitted value from source every 2s
const sample = source.sample(Rx.Observable.interval(2000));
//output: 2..4..6..8..
sample.subscribe(val => console.log(val));
正如你所看到的,Sample
拾取了最新发射的事件(0,2,......),而Throttle
关闭了流2秒并等待下一个发射(0,3,6,...... )。
油门忽略时间间隔内的每个事件。因此,如果通知程序发出事件,则会忽略(并删除)源中的所有先前事件。
Sample返回自上次样本以来的最后一个事件。因此,如果通知程序发出事件,它将从源事件中查看上次采样中的最新事件。