gpt4 book ai didi

c# - 如何创建一个 IObservable 每 -n- 秒返回一个值而不跳过任何

转载 作者:行者123 更新时间:2023-11-30 19:33:21 26 4
gpt4 key购买 nike

下面这个例子是我尝试这样做的:

var source
= Observable.Sample(
Observable.Range(1, int.MaxValue), TimeSpan.FromSeconds(2));

但是当我 .Subscribe() 到那个 Observable 并将它输出到控制台时,它显示了这样一个序列,每 2 秒输出一行:

OnNext: 312969
OnNext: 584486
OnNext: 862009

显然 .Range() observable 正在运行,而 .Sample() observable 在每次输出之间等待 2 秒。我想知道如何创建一个 observable 但它不允许跳过值,所以显然它看起来像这样:

OnNext: 1
OnNext: 2
OnNext: 3

每 2 秒从 .Range() 输出一个值。我如何在 .NET 的响应式扩展中完成此操作?

最佳答案

使用 Observable.GenerateWithTime:

var source = Observable.GenerateWithTime(1, _ => true, x => ++x, x => x, x => TimeSpan.FromSeconds(2));

Observable.Range 使用 Observable.Generate,所以这是一种方法。可能还有许多其他方法。

对于更高级的东西,比如以相同的方式处理事件(因为这显然只有在您自己生成数据时才有用),请参阅 How to throttle event stream using RX?它处理了这个问题并且已经解决了。

关于c# - 如何创建一个 IObservable<T> 每 -n- 秒返回一个值而不跳过任何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com