如何使用间隔在 Observable 中设置起始值
How to set starting value in Observable with intervals
我正在尝试创建一个具有起始值的订阅中心。我无法设置起始值。
现在我有了每 30 分钟生成 DateTime.UtcNow 的 observable。
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)
重载,而不是间隔运算符。
如果将 dueTime 设置为 TimeSpan.Zero
,它将在订阅时发出第一个项目。
Observable
.Timer(TimeSpan.Zero, TimeSpan.FromMinutes(30))
.Select(_ => DateTime.UtcNow)
...
作为你也可以使用StartWith。但是 StartWith 会给你声明时间而不是订阅时间。如果申报时间和认购时间相同,当然没有区别。
我正在尝试创建一个具有起始值的订阅中心。我无法设置起始值。
现在我有了每 30 分钟生成 DateTime.UtcNow 的 observable。
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)
重载,而不是间隔运算符。
如果将 dueTime 设置为 TimeSpan.Zero
,它将在订阅时发出第一个项目。
Observable
.Timer(TimeSpan.Zero, TimeSpan.FromMinutes(30))
.Select(_ => DateTime.UtcNow)
...
作为