【问题标题】:how delay works in rxjs in this scenario?在这种情况下,延迟如何在 rxjs 中工作?
【发布时间】:2023-03-26 11:31:01
【问题描述】:

我是 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。你足够高,他们需要十秒钟才能击中地面pipe(delay(10000)). 保龄球击中地面之间的间隔TimeInterval 仍然是一秒。
  • @Tanner 你应该把你的评论放在一个答案中,我觉得你应该得到清晰简洁的解释:)
  • delayIf the delay argument is a Number, this operator time shifts the source Observable by that amount of time expressed in milliseconds. The relative time intervals between the values are preserved.
  • @fridoo 太棒了!只需将其作为答案,我很乐意接受

标签: javascript rxjs


【解决方案1】:

输出是正确的。整个流时移了delay

如果延迟参数是一个数字,则此运算符时间移动 源 以毫秒表示的时间量可观察。 值之间的相对时间间隔被保留。
[RxJS - delay]

要在每个项目后等待给定的时间查看:

Delay for every element with RXJS

Guarantee n seconds between emit without waiting initially

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2018-06-16
    • 2017-06-21
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多