Angular 为什么需要去盎司时间?

Angular 为什么需要去盎司时间?,angular,debounce,Angular,Debounce,我正在应用程序的数据表中实现搜索功能。为此,我找到了一个教程,可以在其中添加debounceTime,这样搜索就不会立即发生(在我的示例中为150毫秒) 这样做的目的是什么 我问这个问题的原因是,当我将去盎司时间从150毫秒更改为0时,搜索看起来更加平滑和“更好” 我的猜测是,它更适合运行时还是服务器?这是一个无关紧要的问题,但仍然唤醒了我的好奇心,希望更好地理解编码的一般性和我的情况 fromEvent(this.filter.nativeElement, 'keyup')

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

这样做的目的是什么

我问这个问题的原因是,当我将去盎司时间从150毫秒更改为0时,搜索看起来更加平滑和“更好”

我的猜测是,它更适合运行时还是服务器?这是一个无关紧要的问题,但仍然唤醒了我的好奇心,希望更好地理解编码的一般性和我的情况

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

在自动执行搜索的搜索输入中,主要需要解盎司时间。您不希望只在您完成键入后才在您键入的每个字母后运行搜索。仅当从函数的第一次调用开始,函数需要再次调用的时间为x时,解盎司才会操作该函数

300毫秒的去盎司时间就可以了


您还可以在此处阅读有关油门以及去盎司和油门之间的差异:

在自动执行搜索的搜索输入中,主要需要去盎司时间。您不希望只在您完成键入后才在您键入的每个字母后运行搜索。仅当从函数的第一次调用开始,函数需要再次调用的时间为x时,解盎司才会操作该函数

300毫秒的去盎司时间就可以了


您还可以在此处阅读有关throttle以及debounce和throttle之间的区别:

有几个原因-主要原因是搜索功能可能会减慢应用程序的速度。当有人打字时,这可能会造成明显的延迟。另一个原因是,更新过程可能比键入慢,从而导致应用程序状态和用户期望之间的失同步:用户按“a”键-发送请求,用户按“b”键-发送请求,收到“a”响应,收到“b”响应。因此,在用户键入“b”后,应用程序中可能会出现“a”响应。如果您在每次击键后都要点击api,那么您的服务器将需要在短时间内处理大量请求。现在,如果你有很多用户,他们都在同一时间搜索?你很快就会没有资源了。有几个原因-主要原因是搜索功能可能会减慢你的应用程序的速度。当有人打字时,这可能会造成明显的延迟。另一个原因是,更新过程可能比键入慢,从而导致应用程序状态和用户期望之间的失同步:用户按“a”键-发送请求,用户按“b”键-发送请求,收到“a”响应,收到“b”响应。因此,在用户键入“b”后,应用程序中可能会出现“a”响应。如果您在每次击键后都要点击api,那么您的服务器将需要在短时间内处理大量请求。现在,如果你有很多用户,他们都在同一时间搜索?你很快就会没有资源了。