【发布时间】:2021-09-08 21:35:24
【问题描述】:
我想实现去抖动。
Vanilla java 脚本代码如下所示
onInputChange(ev) {
clearTimeout(this.timer);
this.timer = setTimeout(() => {
this.http.get('https://jsonplaceholder.typicode.com/users').subscribe(users => console.log('users', users));
},700)
}
但我找不到在我的角度组件中对 rxjs 执行相同操作的方法
我试过了
我找到了debounceTime 运算符,但它仍然每次都发出请求。没有1000毫秒的延迟
this.http.get('https://jsonplaceholder.typicode.com/users')
.pipe(debounceTime(1000))
.subscribe(users => console.log('users', users));
我也试过了
<input [(ngModel)]="newUser" (input)="onInputChange($event)" [formControl]="newUserControll"/>
this.newUserControll.valueChanges.pipe(
debounceTime(1000)
switchMap(() => interval(1000))).subscribe(x => console.log('x', x))
但我明白了
',' expected. 错误
【问题讨论】:
-
你真的有可用的反应输入吗?因为那是需要去抖动的东西。你现在拥有它的方式真的行不通..你已经进行了 http 调用..
-
是的,我绑定了 formControl,我想防止在输入中的每个键类型上调用 http 请求...在绑定到 formControll 上的 valueChanges 后我该怎么做?
-
在 valuechanges 中管道去抖动..?
-
@MikeOne 我编辑了我的问题。你能看看它并告诉我我的错误在哪里吗?
-
不确定间隔在那里做什么。找到这个:stackoverflow.com/questions/35991867/…
标签: angular rxjs debouncing