RxJS中的throttleTime与debounceTime之间有什么区别?何时选择哪个?
我试图理解RxJS中的throttleTime与debounceTime之间有什么区别?何时选择哪个?,rxjs,observable,rxjs-pipeable-operators,Rxjs,Observable,Rxjs Pipeable Operators,我试图理解throttleTime与debounceTime的区别,以及什么时候使用哪一种 我有一个upvote按钮,它向后端发出API请求(计算投票数)。用户可以多次提交按钮,但我想限制每秒按钮可以按下的次数 我知道throttleTime和debounceTime操作符可以这样做,但我应该选择哪一个 const upvoteClicks=fromEvent(this.el.nativeElement,'click') .管道(去BounceTime(500)) .subscribe(()=>
throttleTime
与debounceTime
的区别,以及什么时候使用哪一种
我有一个upvote按钮,它向后端发出API请求(计算投票数)。用户可以多次提交按钮,但我想限制每秒按钮可以按下的次数
我知道throttleTime
和debounceTime
操作符可以这样做,但我应该选择哪一个
const upvoteClicks=fromEvent(this.el.nativeElement,'click')
.管道(去BounceTime(500))
.subscribe(()=>this.myService.postpvote(this.postId));
我认为在您的情况下,throttleTime
工作得更好,因为您希望在用户单击按钮时立即发出api请求
throttleTime
和debounceTime
都会忽略同时发生的事件,但是throttleTime
会立即发出,而
debounceTime
等待额外的延迟
你可以从视觉上很好地看到这一点
此外,本文还对这两个运营商进行了很好的概述。(一个更简单的答案)
假设用户单击触发请求的按钮(示例):
节流时间=可以限制点击次数,因此每秒只有1次(防止按钮垃圾邮件)
去盎司时间=可以在每个请求通过之前增加延迟(按下按钮,1秒钟内无任何事情发生,然后请求通过)
1秒只是一个例子。您可以在debounceTime()或throttleTime()中输入任何内容-在ms中虽然这是正确的,但您只解释“何时”而不是“什么”。在OP的示例中,按下按钮表示赞成票或反对票。假设用户在第一篇帖子上投票,并立即改变了主意,投了第二篇帖子/个人/任何东西的票。使用
throttleTime
可以为post 1注册一个like,使用debounceTime
可以为post 2注册一个like。两种实现都不优于另一种,但要记住这是一个重要的区别。