【发布时间】:2019-07-08 16:26:27
【问题描述】:
我对 rxjs 运算符 delay 有点困惑。
当我使用from 创建的假 observable 对其进行测试时,我只看到 initial 延迟:
const { from } = Rx;
const { delay, tap } = RxOperators;
from([1, 2, 3, 4]).pipe(
tap(console.log),
delay(1000));
(您可以将此代码 sn-p 复制并粘贴到rxviz。)
我在其中放置了一个tap,以确保from 实际上将数组项作为单独的值而不是单个数组值发出。
最初的延迟不是我所期望的,但至少 the docs 是这样说的:
[...] 这个操作符将源 Observable 时间移动了以毫秒表示的时间量。值之间的相对时间间隔被保留。
但是,当我使用从事件创建的 observable 对其进行测试时,我会在每个发出的值之前看到延迟:
const { fromEvent } = Rx;
const { delay } = RxOperators;
fromEvent(document, 'click')
.pipe(delay(1000))
这里发生了什么?为什么delay 在这两种情况下的行为不同?
【问题讨论】:
-
如果您想在发射项目之间延迟 1 秒,请尝试
throttleTime(1000) -
throttleTime 将忽略在传入时间段内发生的任何事件。
标签: rxjs reactivex rxjs-pipeable-operators