正确地结束可观察流的错误方式

问题描述 投票:0回答:1

我有几种返回IObservable的方法。在所有情况下,我都将建立一个查询,该查询将导致返回的observable完成。通常,我一直在使用TakeUntil扩展方法。我在TakeUntil中使用的可观察类型包含一个标志,该标志告诉我是否存在问题。我如何使用它来导致我返回的可观察对象以错误结尾?我很喜欢TakeUntil重载,它允许可观察的对象以错误结尾。

目前,我已经破解了一种方法,该方法返回一个主题,该主题已订阅可观察查询,并且还订阅了我在TakeUntil中使用的其他可观察对象,以调用OnCompleted或OnError。我意识到这是一个糟糕的计划,但是我应该怎么做?任何帮助,不胜感激。

c# system.reactive
1个回答
0
投票
我们要做的就是将具体的通知转换为隐式通知-使用Dematerialize运算符。

这里是一个示例流,如果流中出现值10,则抛出该流,但如果任何值> = 9,则将其完成。

var errorAt10 = values.Select(value => { if (value == 10) return Notification.CreateOnError<long>(new Exception()); if (value >= 9) return Notification.CreateOnCompleted<long>(); return Notification.CreateOnNext(value); }) .Dematerialize();

© www.soinside.com 2019 - 2024. All rights reserved.