我想我不能正确理解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
发出值并使用限制使用函数来确定它应忽略值的时间长度?
这是对的吗?
答案 0 :(得分:2)
以下示例:
//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,......)。
答案 1 :(得分:1)
油门忽略时间间隔内的每个事件。因此,如果通知程序发出事件,则会忽略(并删除)源中的所有先前事件。
Sample返回自上次样本以来的最后一个事件。因此,如果通知程序发出事件,它将从源事件中查看上次采样中的最新事件。