我试着在我的搜索中设置去抖动时间,但没有工作...检查我的代码:
ngOnInit(): void {
this.search.valueChanges.subscribe(
(selectedValue) => {
this.searchVal(selectedValue)
}
);
}
private getAllDrivers(query: string) {
console.log('gar')
return this.accountsService.getDrivers(query)
.pipe(
debounceTime(800),
distinctUntilChanged(),
map((data: any) => {
data.body?.forEach((driver: IDriver) => {
driver.name = `${driver.firstName} ${driver.lastName}`
});
return data.body || [];
}),
tap(() => noop, err => {
this.errorMessage = err && err.message || 'Something goes wrong';
})
)
}
public search: FormControl = new FormControl(null);html:
<input [formControl]="search">为什么不使用这个代码呢?
当我每时每刻都在寻找某样东西的时候,我得到了http get ...I需要半秒,几秒的延迟……
我也在尝试:
this.search.valueChanges.
.pipe(debounceTime(800))
subscribe(
(selectedValue) => {
this.searchVal(selectedValue)
}
);也没有工作..。
发布于 2021-11-22 17:16:39
您必须使用debounceTime和switchMap,但您的第二个示例或多或少也应该有效。
假设this.search.valueChanges是可观察到的用户输入
this.search.valueChanges.pipe(
debounceTime(800),
distinctUntilChanged(),
switchMap(query=>this.accountsService.getDrivers(query))
).subscibe(results => do sometinh)https://stackoverflow.com/questions/70069770
复制相似问题