Javascript 在这种情况下,rxjs中的延迟是如何工作的?

Javascript 在这种情况下,rxjs中的延迟是如何工作的?,javascript,rxjs,Javascript,Rxjs,我是rxjs的新手,和他们一起玩。这是每秒发出值的代码。由于它通过延迟操作符,设置为10秒,我希望每11秒输出一次 import { of,interval } from 'rxjs'; import { map,delay,timeInterval } from 'rxjs/operators'; interval(1000) .pipe(delay(10000)) .pipe(timeInterval()) .subscribe(val=>{ console.log(val)

我是rxjs的新手,和他们一起玩。这是每秒发出值的代码。由于它通过延迟操作符,设置为10秒,我希望每11秒输出一次

import { of,interval } from 'rxjs'; 
import { map,delay,timeInterval } from 'rxjs/operators';


interval(1000)
.pipe(delay(10000))
.pipe(timeInterval())
.subscribe(val=>{
  console.log(val);
});
这是第一次。在那之后,它开始每秒而不是11秒来安慰输出。这是怎么发生的?这是输出,供您参考

TimeInterval {value: 0, interval: 11004}
TimeInterval {value: 1, interval: 997}
TimeInterval {value: 2, interval: 1000}
TimeInterval {value: 3, interval: 1003}
TimeInterval {value: 4, interval: 997}
TimeInterval {value: 5, interval: 1000}
...

输出是正确的。整个流通过
延迟进行时移

如果延迟参数是一个数字,则此运算符会将 以毫秒表示的时间量可观察到的源。 保留值之间的相对时间间隔。

要在每个项目之后等待给定的时间,请参阅:


假设你有一堆保龄球,而且你在一座建筑物的顶部。你每隔一秒钟就从阳台上扔一个
interval
。你已经够高了,他们需要10秒钟才能落地
管道(延迟(10000))。
保龄球落地之间的时间间隔仍然是1秒。@Tanner你应该把你的评论写进回答中,我觉得你应该为这个清晰简洁的解释而受到赞扬:)
如果delay参数是一个数字,那么这个操作符时间会将可观察到的源移动以毫秒为单位的时间量。值之间的相对时间间隔被保留。
@fridoo太棒了!我很乐意接受你的回答