为什么需要去抖时间?

Gus*_*oft 1 debounce angular

我正在我的应用程序的数据表中实现搜索功能。为此,我找到了一个教程,可以在其中添加debounceTime,这样搜索不会立即发生(在我的示例中为150毫秒)。

这样做的目的是什么?

我问的原因是,当我将反跳时间从150毫秒更改为0时,搜索似乎更加顺畅和“更精细”。

我的猜测是,对于运行时还是服务器更好?这是一个微不足道的问题,但仍然使我好奇,希望能更好地理解一般的编码,在我的角度是Angular。

    fromEvent(this.filter.nativeElement, 'keyup')
        .pipe(
            takeUntil(this._unsubscribeAll),
            debounceTime(150),
            distinctUntilChanged(),
        )
        .subscribe(() => {
            if (!this.dataSource )
            {
                return;
            }
            this.dataSource.filter = this.filter.nativeElement.value;
        });
}
Run Code Online (Sandbox Code Playgroud)

Udi*_*zor 5

去抖时间主要在自动执行搜索的搜索输入中需要。您不希望仅在完成键入后才在键入的每个字母之后运行搜索。仅在从第一次调用该函数开始,已经有x次该函数要再次调用时,防抖操作该函数。

300ms的反跳时间将解决问题。

您还可以在此处阅读有关节气门以及去抖和节气门之间的区别:节气门与去抖