Javascript 理解RxJS去Bounce语义

Javascript 理解RxJS去Bounce语义,javascript,angularjs,rxjs,Javascript,Angularjs,Rxjs,发件人: 在第一次按键后,debouncedInput是否会等待呼叫观察者5毫秒 还假设用户在5毫秒间隔到期之前继续键入。在发布事件/源值之前,debouncedInputObservable是否会等待不间断的5毫秒时间 举个例子(根据@OJKwon答案中非常有用的大理石图),假设-代表一毫秒。我们有以下几点: -a--b--c-------d 在这种情况下,监控间隔的计时器将在以下时间重新启动: 输入a时为2毫秒 键入b时为5毫秒 键入c时为8毫秒 9、10、11、12、13毫秒传球 a

发件人:

在第一次按键后,
debouncedInput
是否会等待呼叫观察者5毫秒

还假设用户在5毫秒间隔到期之前继续键入。在发布事件/源值之前,
debouncedInput
Observable是否会等待不间断的5毫秒时间

举个例子(根据@OJKwon答案中非常有用的大理石图),假设
-
代表一毫秒。我们有以下几点:

 -a--b--c-------d
在这种情况下,监控间隔的计时器将在以下时间重新启动:

  • 输入a时为2毫秒
  • 键入b时为5毫秒
  • 键入c时为8毫秒
  • 9、10、11、12、13毫秒传球
  • abc
    在13毫秒时发出,因为在此期间没有其他事件
  • 当在14毫秒时键入
    d
    时,计时器再次启动
  • 因为没有键入其他值,所以在19毫秒时发出
    abcd

去BounceTime操作员所做的是将源可观测发射延迟指定的时间范围。如果在延迟期间发出另一个源值,则:

  • 删除以前的值
  • 重置间隔计时器
  • 等待查看间隔是否会在不发出更多源值的情况下通过
  • 最后,如果在间隔期间没有发出值,它将发出最后一个值
RxJSs很好地说明了这一点。让我们回顾几个案例

当我们有
source.debountTime(20)
时,
  • 所有源值发射在20秒后发生
  • const source='-a------b-----';
    预期常数='--a----b---';
    

    所有源值都只是简单地延迟

  • 如果某个源值随后在20ms内发出
  • const source='-a--bc--d--|';
    预期常数='--a--c--d-|';
    

    发射的
    a
    延迟20ms,
    b
    由于
    c
    在下一次发射的20ms时间间隔之前发射而下降,然后
    d
    c
    完成后延迟20ms


    总结一下,
    debounceTime
    操作符作为一个速率限制器,只允许在给定的时间范围内发出一个值。

    这两个问题都是肯定的。真棒,大理石测试图真的很有帮助!我用这个格式更新了这个问题。
     -a--b--c-------d