rxjs中样本和油门之间的差异

时间:2018-01-01 22:32:40

标签: angular rxjs reactive-programming angular2-observables

我想我不能正确理解samplethrottle之间的区别。

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发出值并使用限制使用函数来确定它应忽略值的时间长度?

这是对的吗?

2 个答案:

答案 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返回自上次样本以来的最后一个事件。因此,如果通知程序发出事件,它将从源事件中查看上次采样中的最新事件。