笨蛋示例:https://plnkr.co/edit/NZwb3ol8CbZFtSc6Q9zm?p=preview https://plnkr.co/edit/NZwb3ol8CbZFtSc6Q9zm?p=preview
我知道 RxJS (5.0 beta.4) 有以下 3 种节流方法:
auditTime()
, throttleTime()
and debounceTime()
我正在寻找的行为就是lodash
默认情况下throttle
:
-
- 立即给我第一个值!
-
- 对于连续值,保持给定延迟的值,然后发出最后出现的值
-
- 当油门延迟到期时,返回状态(1)
理论上这应该是这样的:
inputObservable
.do(() => cancelPreviousRequest())
.throttleTime(500)
.subscribe((value) => doNextRequest(value))
But
-
throttleTime
如果在油门超时时发出,则永远不会给我最后一个值
-
debounceTime
不会立即触发
-
auditTime
不会立即触发
我可以组合任何 RxJS 方法来实现所描述的行为吗?
对于 2018 年之后寻找此内容的人:此内容已在一年前添加,但由于某种原因,文档尚未更新。
RxJS 提交 https://github.com/ReactiveX/rxjs/commit/bb0738f3e6df643158c4a7d1e38f035978b42882
您可以简单地将配置对象传递给throttleTime
。默认为{ leading: true, trailing: false }
。要实现这里讨论的行为,您只需设置trailing
to true
: { leading: true, trailing: true }
EDIT:
为了完整起见,这里是一个工作片段:
import { asyncScheduler } from 'rxjs'
import { throttleTime } from 'rxjs/operators'
...
observable.pipe(
throttleTime(100, asyncScheduler, { leading: true, trailing: true })
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)