为什么需要去抖时间?

时间:2019-07-09 14:17:30

标签: angular debounce

我正在我的应用程序的数据表中实现搜索功能。为此,我找到了一个教程,可以在其中添加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;
        });
}

1 个答案:

答案 0 :(得分:4)

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

去抖动时间为300ms即可解决问题。

您还可以在此处了解有关油门以及防抖和油门之间的区别:throttle vs debounce