如何在具有间隔的可观察中设置起始值



我正在尝试创建一个具有起始值的订阅中心。我无法设置起始值。

现在我有可观察的,它每 30 分钟生成一次 DateTime.UtcNow。

public async Task Subscribe()
{
    var client = Clients.Client(Context.ConnectionId);
    var subscription = new CompositeDisposable();
    var dateTimeUTCNow = Observable.Interval(TimeSpan.FromMinutes(30))
           .Subscribe(@event => 
           {
               client.SendAsync("newDateTimeUtc", DateTime.UtcNow);
           });
    subscription.Add(dateTimeUTCNow);
    RegisterHandler(subscription, userFound.UserToken);
}

我必须设置起始值 - DateTime.NowUtc

您是否正在寻找 StartWith 运算符?

Observable
    .Interval(TimeSpan.FromMinutes(30))
    .Select(_ => DateTime.UtcNow)
    .StartWith(DateTime.UtcNow)
    ...
可以使用

.Timer(TimeSpan dueTime, TimeSpan period)重载,而不是 Interval 运算符。如果将 dueTime 设置为 TimeSpan.Zero它将在订阅时发出第一项。

Observable
    .Timer(TimeSpan.Zero, TimeSpan.FromMinutes(30))
    .Select(_ => DateTime.UtcNow)
    ...

正如gitbox提到的,你也可以使用StartWith。但是,StartWith将为您提供声明时间而不是订阅时间。如果申报时间和认购时间相同,当然不会有区别。

相关内容

  • 没有找到相关文章

最新更新