gpt4 book ai didi

angular - 如何使可观察的 debounceTime 有条件

转载 作者:行者123 更新时间:2023-12-03 15:18:34 27 4
gpt4 key购买 nike

我对元素输入事件有一个简单的去抖动,如下所示:

Observable
.fromEvent(this.elInput.nativeElement, 'input')
.debounceTime(2000)
.subscribe(event => this.onInput(event));

我想根据发出时事件的值使去抖动有条件,这可能吗?

谢谢

最佳答案

是的,这是完全可能的。只需使用 debounce运算符而不是 debounceTime .它被传递一个选择器函数,该函数在调用时接收先前的运算符通知。

在你的例子中:

Observable
.fromEvent(this.elInput.nativeElement, 'input')
.debounce(ev => ev.hasSomeValue ? timer(2000) : EMPTY)
.subscribe(event => this.onInput(event));

选择器函数需要一个 ObservableLike并等待它发出,然后再转发 debounce 的最后一个通知已收到。所有其他通知都被丢弃,就像 debounceTime .您可以使用 EMPTY在没有任何超时的情况下立即转发通知(尽管这将是异步的,请参见下文)

来自 learn-rxjs :

Though not as widely used as debounceTime, debounce is important when the debounce rate is variable!



注: Debounce 将始终异步调度最后一个值的转发,即使内部 Observable 立即发出。为避免这种情况,您必须创建第二个 observable 并使用 filter避免 debounce共。

关于angular - 如何使可观察的 debounceTime 有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53044981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com