【发布时间】:2015-01-07 21:47:16
【问题描述】:
return Observable
.Timer(TimeSpan.FromSeconds(2))
.SelectAsync(delegate { return this.getResponse(request); })
.Repeat()
.Timeout(TimeSpan.FromSeconds(10), Observable.Return(new InMemoryDataSetIsGoodResponse(false, "Connection to Mongo timed out after 10 seconds."))
.SkipWhile(r => r.IsGood)
.Take(1)
.StartWith(new InMemoryDataSetIsGoodResponse(true, null)));
我想轮询数据库以确保特定记录仍在数据库中。 getResponse 返回一个 IsGood 响应,只要记录在那里,它就会返回一个错误的响应。
我只想假设它存在并且什么都不做,直到它变坏,此时我只想发布一次不好的响应并完成它。
但是观察者每两秒就会看到一个IsGood 响应。谁能解释一下?
【问题讨论】:
-
无论
Take(1)之前的所有内容如何,观察者最多应该看到 2 个值。您能否发布一些您如何订阅的代码。
标签: c# system.reactive