我正在尝试创建一个具有起始值的订阅中心。我无法设置起始值。
现在我有可观察的,它每 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将为您提供声明时间而不是订阅时间。如果申报时间和认购时间相同,当然不会有区别。