0
Observable.Interval(TimeSpan.FromSeconds(5))
.Timeout(dueTime: DateTimeOffset.UtcNow,
 other: Observable.Return<long>(-1))
.Subscribe(Console.WriteLine);

上面的代码片段会在超时时返回 -1。但是,我需要一些允许我映射序列的东西,比如选择运算符。

我想我需要类似的东西

.Timeout(DateTimeOffset dueTime, Func<IObservable<TSource>,Func<TSource, TResult> selector)

所以我做这样的事情

 Observable.Interval(TimeSpan.FromSeconds(5))
    .Timeout<long, string>(dueTime: DateTimeOffset.UtcNow,
     other: i=> Observable.Return<string>(i * i.ToString()))
    .Subscribe(Console.WriteLine);

有人可以启发我吗?谢谢。

4

1 回答 1

1

怎么样:

Observable.Interval(TimeSpan.FromSeconds(5))
    .SelectMany(x => DoWork().Timeout(...))
    .Subscribe(Console.WriteLine);

您可以将 DoWork 实现为:

IObservable<Unit> DoWork()
{
    return Observable.Start(() => Thread.Sleep(1000));
}
于 2013-06-10T02:44:55.217 回答