gpt4 book ai didi

angular - 基于条件的可变 debounceTime

转载 作者:太空狗 更新时间:2023-10-29 17:37:03 26 4
gpt4 key购买 nike

是否可以将 debounceTime 值设置为根据条件更改的值?我有一个行为主题设置(如果我做错了这部分,请告诉我):

this.searchSubject.asObservable().debounceTime(1000).subscribe(x => this.emitFilters())

我希望去抖动时间根据某些过滤条件而有所不同,但是当我尝试在其中添加一个函数时,VS Code 提示它无效。

我也看了一下debounce,好像是取了一个类型的变量,但是从文档上看,我好像搞不明白(根据VS Code,我扔进去的函数返回了错误的类型,甚至尽管我是从记录的代码中复制的)。如果它有所作为,我将在 Angular 2 中完成所有这些工作。

最佳答案

您在哪里看到建议 .debounceTime 接受函数的文档?有据可查here具有以下签名:

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

您要找的方法是debounce其中,根据文档:

Emits a value from the source Observable only after a particular time span determined by another Observable has passed without another source emission.
It's like debounceTime, but the time span of emission silence is determined by a second Observable.

这是它的签名:

public debounce(durationSelector: function(value: T): Observable | Promise): Observable

因此,要完成您所追求的行为,您所要做的就是设置另一个 Observable,它将提供去抖动的时间间隔。

您可以使用另一个 Subject 来执行此操作,您可以根据应用程序逻辑调用 .next() 来提供新的等待时间。

let debounceSubject = new Subject<number>();
let debounceObservable$ = debounceSubject.asObservable();

// Somewhere else in code you'll do debounceSubject.next(1000); for example

最后你会像这样设置你的新去抖:

this.searchSubject.asObservable()
.debounce(() => debounceObservable$).subscribe(x => this.emitFilters())

可以找到更多使用 .debounce 的例子 here (学习 rxjs 的好网站)包括 jsBin 和 jsFiddle 的工作示例。

关于angular - 基于条件的可变 debounceTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42070554/

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