- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已阅读 throttleTime documentation ,但我没有完全了解运算符。
我知道 throttleTime(1000)
是如何工作的。事件到达后,它将跳过所有后续事件 1 秒,然后再次开始此过程。
我很难理解的是 ThrottleConfig
究竟是如何工作的,这是运算符的第三个参数。
throttleTime<T>(
duration: number,
scheduler: SchedulerLike = async,
config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction<T>
leading
和 trailing
属性如何改变源 Observable 的功能?
我看过很多文档,但他们并没有清楚地解释这一点。
所以有四种选择:
{ leading: true, trailing: false }
:{ leading: false, trailing: true }
:{ leading: false, trailing: false }
:{ leading: true, trailing: true }
:最佳答案
throttleTime
将在收到新值且尚未受到限制时开始一个新的节流间隔(一个不会发出任何项目的时间段)。此限制间隔的长度由您提供的持续时间决定。
在 RxJS 7 中,当在 节流间隔 结束时发出尾随值时,也会启动一个新的节流间隔。
leading
和 trailing
指定项目是应该在 throttle 间隔的开始还是结束 发出。
leading:
在新的节流间隔开始时发射一个项目。
trailing:
在 节流间隔 结束时发出从源接收到的最后一个项目。
RxJS 6 & 7 - trailing: false
throttleTime(12 ticks, { leading: true, trailing: false })
source_1: --0--1-----2--3----4--5-6---7------------8-------9---------
throttle interval: --[~~~~~~~~~~~]----[~~~~~~~~~~~]---------[~~~~~~~~~~~]-----
output_1: --0----------------4---------------------8-----------------
source_2: --0--------1------------------2--------------3---4---------
throttle interval: --[~~~~~~~~~~~]---------------[~~~~~~~~~~~]--[~~~~~~~~~~~]-
output_2: --0---------------------------2--------------3-------------
throttleTime(12 ticks, { leading: false, trailing: false })
source_1: --0--1-----2--3----4--5-6---7------------8-------9---------
throttle interval: --[~~~~~~~~~~~]----[~~~~~~~~~~~]---------[~~~~~~~~~~~]-----
output_1: -----------------------------------------------------------
source_2: --0--------1------------------2--------------3---4---------
throttle interval: --[~~~~~~~~~~~]---------------[~~~~~~~~~~~]--[~~~~~~~~~~~]-
output_2: -----------------------------------------------------------
RxJS 6 - trailing: true
throttleTime(12 ticks, { leading: true, trailing: true })
source_1: --0--1-----2--3----4--5-6---7------------8-------9---------
throttle interval: --[~~~~~~~~~~~]----[~~~~~~~~~~~]---------[~~~~~~~~~~~]-----
output_1: --0-----------3----4-----------7---------8-----------9-----
source_2: --0--------1------------------2--------------3---4---------
throttle interval: --[~~~~~~~~~~~]---------------[~~~~~~~~~~~]--[~~~~~~~~~~~]-
output_2: --0-----------1---------------2--------------3-----------4-
throttleTime(12 ticks, { leading: false, trailing: true })
source_1: --0--1-----2--3----4--5-6---7------------8-------9---------
throttle interval: --[~~~~~~~~~~~]----[~~~~~~~~~~~]---------[~~~~~~~~~~~]-----
output_1: --------------3----------------7---------------------9-----
source_2: --0--------1------------------2--------------3---4---------
throttle interval: --[~~~~~~~~~~~]---------------[~~~~~~~~~~~]--[~~~~~~~~~~~]-
output_2: --------------1---------------------------2--------------4-
RxJS 7 - trailing: true
throttleTime(12 ticks, { leading: true, trailing: true })
source_1: --0--1-----2--3----4--5-6---7------------8-------9---------
throttle interval: --[~~~~~~~~~~~I~~~~~~~~~~~I~~~~~~~~~~~I~~~~~~~~~~~I~~~~~~~~
output: --0-----------3-----------6-----------7-----------9--------
source_2: --0--------1------------------2--------------3---4---------
throttle interval: --[~~~~~~~~~~~I~~~~~~~~~~~]---[~~~~~~~~~~~]--[~~~~~~~~~~~I~
output_2: --0-----------1---------------2--------------3-----------4-
throttleTime(12 ticks, { leading: false, trailing: true })
source_1: --0--1-----2--3----4--5-6---7------------8-------9---------
throttle interval: --[~~~~~~~~~~~I~~~~~~~~~~~I~~~~~~~~~~~I~~~~~~~~~~~I~~~~~~~~
output: --------------3-----------6-----------7-----------9--------
source_2: --0--------1------------------2--------------3---4---------
throttle interval: --[~~~~~~~~~~~I~~~~~~~~~~~]---[~~~~~~~~~~~I~~~~~~~~~~~]----
output_2: --------------1---------------------------2-----------4----
关于javascript - throttleTime 运算符的配置参数如何工作? ( throttle 配置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57059666/
我已阅读 throttleTime documentation ,但我没有完全了解运算符。 我知道 throttleTime(1000) 是如何工作的。事件到达后,它将跳过所有后续事件 1 秒,然后再
我一直在使用这两种(完全相同的方法)来调用 throttleTime,但我不确定它们是否真的相同。 this.scrollSubject$ = new Subject(); this.scrollSu
我正在构建一个 RxJS 幻灯片,如果用户按住右箭头键,我想每隔 500 毫秒导航到下一个图 block 。我正在使用 throttleTime,如下所示: const forwardNavigati
我正在尝试对某个主题使用 throttleTime 运算符。我已经导入了运算符(operator)。我收到此错误:this.cropSubject.asObservable(...).throttle
我正在使用 angular/cli": "~6.1.5 和 rxjs": "^6.0.0作为 Angular 6 的新手,我开始从官方文档中学习 http://reactivex.io/rxjs/cl
我想了解 throttleTime 与 debounceTime 以及何时使用哪个? 我有一个投票按钮,可以向后端发出 API 请求(计算选票)。用户可以多次提交按钮,但我想限制每秒可以按下按钮的次数
对于我的生活,我无法完成这项工作。我搜索了又搜索,但找不到任何示例(所有示例都包含 .fromEvent(),http.get 中没有)。 在我的模板中,我有这样的输入: 在我的组件中,我有以下内容
我是一名优秀的程序员,十分优秀!