【问题标题】:Operator that waits for new value in certain amount of time在一定时间内等待新值的运算符
【发布时间】:2019-01-03 08:31:21
【问题描述】:

我正在寻找observable 运算符,它在发出值后将等待 500 毫秒。 如果在那个时间发出新值,它会采用新值并最后忘记。 如果没有发出新值,它将进一步传递该值。

我试过了: delay - 它只会延迟 每个debounceTime - 它在值之间创建间隙并发出每个值。

【问题讨论】:

  • 你可以看看auditTime
  • auditTime 听起来像你需要的,但这取决于你是否想在源 Observable 的每个值之后推迟延迟。它认为当auditTime 收到一个值时,它将在500ms 之后发出,并且不会为后续的源排放创建新的计时器。
  • 您:“它会在值之间产生差距并发出每个值。” 文档:“可能会丢弃一些值”结论?
  • @abetteroliver 你是对的。问题出在其他地方。

标签: rxjs observable rxjs6


【解决方案1】:

您可以尝试 throttleTime(500) 和 last() 运算符。 例如,

interval(100)
.pipe(
  take(10),
  throttleTime(500),
  last(),
)
.subscribe({
  next: x => console.log('x', x),
  error: error => console.log('error', error),
  complete: () => console.log('complete'),
});

结果,你得到 6 -> 完成。

【讨论】:

    【解决方案2】:

    看看debounceTime

    debounceTime(dueTime: number, scheduler: Scheduler): Observable

    丢弃小于指定时间的发射值 输出

                     -1---2-3-4----5-6|
    debounceTime(--) ----1-------4---6|
    

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 2022-01-13
      • 2019-01-16
      • 2011-05-13
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多