- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下方法负责调用我的服务类并将结果传递给另一个方法以将它们保存在我的数据库中:
public IObservable<bool> SyncSessions()
{
var subject = new ReplaySubject<bool>();
try
{
var query = new ByFilterQuery { SearchPeriodStartTime = DateTime.Now };
var sessions = _sessionService.GetSessions(query).Result;
var saved = SaveSessions(sessions);
subject.OnNext(saved);
subject.OnCompleted();
}
catch (Exception ex)
{
subject.OnError(ex);
}
return subject;
}
_sessionService.GetSessions(query).ToObservable().Select(SaveSessions);
Exception error = null;
_sessionManager
.SyncSessions()
.Subscribe(null, e => error = e);
Assert.That(error, Is.Not.Null.After(500));
最佳答案
首先,对于您发布的原始代码,我建议使用 AsyncSubject而不是 ReplaySubject
.将其视为针对单结果情况进行了优化。
现在回答你的问题...
每当可观察源产生异常时,该异常就会通过 OnError
传播。处理程序。如果,当您订阅 observable 时,您没有提供 OnError
处理程序,然后将抛出异常。
您发布的小代码:
_sessionService.GetSessions(query).ToObservable().Select(SaveSessions);
OnError
处理程序。
Task
抛出异常,还是模拟服务只是抛出异常?除非您使用 async/await,否则应该返回
Task
的函数,但在创建
Task
时抛出异常将立即引发异常而不是返回失败的
Task
. ToObservable 甚至从未被调用,因为 GetSessions 抛出。如果您更改模拟服务以返回失败的
Task
那么您的测试可能会正常工作。
Defer
推迟执行您的方法,直到观察者订阅。除了失败的任务之外,它还将收集任何立即抛出的异常:
return Observable
.Defer(() => _sessionService.GetSessions(query))
.Select(SaveSessions);
关于refactoring - 任务 ToObservable 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17412354/
我正在使用 Web UI 进行可观察的数据绑定(bind)。这是我正在使用的简短代码片段: import 'dart:html'; import 'dart:json'; import 'packag
我正在使用 Visual Studio 2013 和 .NET Framework 版本 4.5.1 我正在阅读有关 Reactive Extensions 的教程,并尝试运行此代码: var t =
我有以下方法负责调用我的服务类并将结果传递给另一个方法以将它们保存在我的数据库中: public IObservable SyncSessions() { var subject = new
我有一个静态集合,比如调用远程 rest api 的任务: static ConcurrentBag> _collection = new ConcurrentBag>(); static void
在带有 clojure 1.5.1 的 lighttable 下使用 rxjava ( http://netflix.github.io/RxJava/javadoc/ ),考虑以下内容(使用副作用、
我试图枚举一个大 IEnumerable 一次,观察附有各种运算符的枚举( Count 、 Sum 、 Average 等)。显而易见的方法是将其转换为 IObservable与方法 ToObserv
我是第一次尝试 RX,我有几个问题。 1)是否有更好的方法来完成我的集合的异步? 2) 我需要阻塞线程直到所有异步任务完成,我该怎么做? class Program { internal cl
有没有人可以指导何时使用其中一种方法而不是另一种方法。他们似乎做同样的事情,因为他们将 TPL Task 转换为 Observable。 Observable.FromAsync 似乎支持取消标记,这
从 Nuget ( https://www.nuget.org/packages/System.Reactive.Core ) 安装 System.Reactive.Core 的 3.0 版本后,我无
我是一名优秀的程序员,十分优秀!