Javascript 可观察到的去盎司Rx&;忽略其间发出的值

Javascript 可观察到的去盎司Rx&;忽略其间发出的值,javascript,rxjs,reactive-programming,rxjs5,Javascript,Rxjs,Reactive Programming,Rxjs5,我有一个可观察的滚动事件。我想忽略它的值,除非经过一段时间 它看起来是这样的(e是事件,debounceTime是500): -e1----e2----e3----e4----e6----e7。你似乎想要 基本区别在于,去抖动将n个事件减少为一个,而节流只允许每个时间窗口通过一个事件 let val = 0; const sub = Rx.Observable.fromEvent(window, 'scroll') .do(_ => val++) .throttle(500);

我有一个可观察的滚动事件。我想忽略它的值,除非经过一段时间

它看起来是这样的(e是事件,
debounceTime
500
):

-e1----e2----e3----e4----e6----e7。你似乎想要

基本区别在于,去抖动将n个事件减少为一个,而节流只允许每个时间窗口通过一个事件

let val = 0;
const sub = Rx.Observable.fromEvent(window, 'scroll')
  .do(_ => val++)
  .throttle(500);

sub.subscribe(v => console.log(v));
然而,这并不完美。用户可能会在500毫秒的窗口内滚动,这样您就会错过最后一次滚动。一种是结合节流和去抖。不过,我不确定这是不是最好的主意

顺便说一句,您不需要订阅一个可观察对象,只需要将值从一个可观察对象推送到另一个可观察对象。只需订阅第一个可观察对象。

。你似乎想要

基本区别在于,去抖动将n个事件减少为一个,而节流只允许每个时间窗口通过一个事件

let val = 0;
const sub = Rx.Observable.fromEvent(window, 'scroll')
  .do(_ => val++)
  .throttle(500);

sub.subscribe(v => console.log(v));
然而,这并不完美。用户可能会在500毫秒的窗口内滚动,这样您就会错过最后一次滚动。一种是结合节流和去抖。不过,我不确定这是不是最好的主意


顺便说一句,您不需要订阅一个可观察对象,只需要将值从一个可观察对象推送到另一个可观察对象。订阅第一个可观察到的。

你不是在寻找吗?@torazaburo是的,谢谢,也许想把它作为答案。这是一把带油门的小提琴,它看起来更像是你在寻找的
auditTime()
你不是在寻找吗?@torazaburo是的,谢谢,可能想把它作为答案。这是一个带油门的工作小提琴,看起来更像是在寻找
auditTime()
 ---e1----e2----e3----e4----------------- <- events

 ---n1------------------------------------- <- notifications

 0--100--------------------500------------- <- time
let val = 0;
const sub = Rx.Observable.fromEvent(window, 'scroll')
  .do(_ => val++)
  .throttle(500);

sub.subscribe(v => console.log(v));