Angular如何解决首次请求因防抖而失效的问题?

更新于
2026-10-02 13:44:10
0阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计781个文字,预计阅读时间需要4分钟。

问题:根据项目中的需求,需要设计一个下拉框,在输入时根据内容提供实时的建议。在此,我们使用了以下组件:

+p-autoComplete [ngModel]=text [suggestions]=results (completeMethod)=search($even)

问题:

根据项目中的需求,需要设计一个下拉框,在输入时根据内容提供实时的建议,在此我们使用了如下组件,

<p-autoComplete [(ngModel)]="text" [suggestions]="results" (completeMethod)="search($event)"> </p-autoComplete>

因为我们需要根据输入内容实时的查询后台返回结果,如果每次更改都要传给后台的话,太耗费资源,而且对用户也不友好,为此我们采用了angular的请求防抖做处理,代码如下。

packages$: Observable<NpmPackageInfo[]>; private searchText$ = new Subject<string>(); search(packageName: string) { this.searchText$.next(packageName); } ngOnInit() { this.packages$ = this.searchText$.pipe( debounceTime(500), distinctUntilChanged(), switchMap(packageName => this.searchService.search(packageName, this.withRefresh)) ); }

作用如下:

debounceTime(500) - 等待,直到用户停止输入(这个例子中是停止 1/2 秒)。

distinctUntilChanged() - 等待,直到搜索内容发生了变化。

阅读全文

本文共计781个文字,预计阅读时间需要4分钟。

问题:根据项目中的需求,需要设计一个下拉框,在输入时根据内容提供实时的建议。在此,我们使用了以下组件:

+p-autoComplete [ngModel]=text [suggestions]=results (completeMethod)=search($even)

问题:

根据项目中的需求,需要设计一个下拉框,在输入时根据内容提供实时的建议,在此我们使用了如下组件,

<p-autoComplete [(ngModel)]="text" [suggestions]="results" (completeMethod)="search($event)"> </p-autoComplete>

因为我们需要根据输入内容实时的查询后台返回结果,如果每次更改都要传给后台的话,太耗费资源,而且对用户也不友好,为此我们采用了angular的请求防抖做处理,代码如下。

packages$: Observable<NpmPackageInfo[]>; private searchText$ = new Subject<string>(); search(packageName: string) { this.searchText$.next(packageName); } ngOnInit() { this.packages$ = this.searchText$.pipe( debounceTime(500), distinctUntilChanged(), switchMap(packageName => this.searchService.search(packageName, this.withRefresh)) ); }

作用如下:

debounceTime(500) - 等待,直到用户停止输入(这个例子中是停止 1/2 秒)。

distinctUntilChanged() - 等待,直到搜索内容发生了变化。

阅读全文