rxjs中sample和throttle的区别
Difference between sample and throttle in rxjs
我想我没有正确理解 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
它们都是用来让observable静音的。 Sample 使用 notifier
发出值,throttle 使用函数来确定它应该忽略值多长时间?
对吗?
Throttle 忽略时间间隔内的所有事件。因此,如果您的通知程序发出事件,则来自源的所有先前事件都将被忽略(并删除)。
采样 returns 自上次采样以来的最后一个事件。因此,如果通知程序发出事件,它将从源事件中查找上次采样的最新事件。
在下面的例子中:
//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
和 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
它们都是用来让observable静音的。 Sample 使用 notifier
发出值,throttle 使用函数来确定它应该忽略值多长时间?
对吗?
Throttle 忽略时间间隔内的所有事件。因此,如果您的通知程序发出事件,则来自源的所有先前事件都将被忽略(并删除)。
采样 returns 自上次采样以来的最后一个事件。因此,如果通知程序发出事件,它将从源事件中查找上次采样的最新事件。
在下面的例子中:
//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、...)。