加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 基于条件的可变debounceTime

发布时间:2020-12-17 10:24:01 所属栏目:安全 来源:网络整理
导读:是否可以将debounceTime值设置为根据条件更改的内容?我有一个行为主题设置如此(请告诉我,如果我甚至做这个部分错了): this.searchSubject.asObservable().debounceTime(1000).subscribe(x = this.emitFilters()) 我希望基于某些过滤条件的去抖时间不同,但
是否可以将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,它将提供去抖动的间隔.

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读