【问题标题】:RxJS - Emit only after specific delay of idlenessRxJS - 仅在特定的空闲延迟后发出
【发布时间】:2017-07-24 17:19:33
【问题描述】:

我有一个表单,用户可以在其中在文本区域中输入降价格式的文本。我想在字段旁边显示已解析标记的准实时预览。

与 StackOverflow 问题表单完全一样。 ;-)

textarea 的值是通过 RxJS Observable 发出的,但我不想刷新每个新值的预览。相反,我想仅在用户停止输入 500 毫秒后刷新预览

这是一个暂定图(第一行是文本区域在用户键入时发出的原始值,第二行是我想要获得的值;只有在没有排放的特定延迟时才会发出一个值已过):

t---t--ttt------tt-ttt------t---|
----------------t-----------t---|

实现这一点的语法是什么?

【问题讨论】:

  • JB... 就这么简单吗? :)
  • 可以的。您还可以将其与 distinctUntilChanged() 链接起来,以避免在用户添加两个字符并删除它们时重新计算 HTML。
  • 谢谢。我觉得问得很傻。我阅读了一堆教程,它们向您展示了如何使用 debounceTime() 运算符使用 RxJS 构建自动完成字段,在这里我问这个问题......我将把它留在这里以供将来参考。如果您愿意发布答案,我会将其标记为已回答。
  • 这种情况有时会发生在我们所有人身上。

标签: rxjs rxjs5


【解决方案1】:

我会在用户体验方面为您的用例推荐 auditTime

如果用户连续输入,然后使用 debounceTime ,准预览不会生成,直到出现暂停。

但是,在auditTime中,只要有类型事件,就会为每个时间间隔生成准预览。

我相信 auditTime 提供了更好的用户体验。

auditTime 和 debounceTime 都会在初始时启动一个计时器 事件进来。两者都会等待给定的时间,然后 发出一个事件。不同的是 debounceTime 会重置定时器 每当有新事件出现而 auditTime 没有出现时。审计时间将 在给定的毫秒数之后发出最近的事件 它是否仍在接收事件。 debounceTime 将等待 对于事件的差距。您说您阅读了文档,但只是 仔细检查一下,我发现此文档特别有用。

一些我觉得有用的参考资料。

https://medium.com/@jvdheijden/rxjs-throttletime-debouncetime-and-audittime-explained-in-examples-c393178458f3

Difference between audit and debounce in rxjs?

【讨论】:

    【解决方案2】:

    您可以使用debounceTime() operator

    您也可以将其与distinctUntilChanged() 链接起来,以避免在用户添加两个字符并删除它们时重新计算 HTML

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多