我该如何使用反应式扩展来解决这个问题?

3
我有一个关于响应式扩展的设计问题,以下是场景描述: 我有一个汽车对象,该汽车对象具有多个验证对象。每个验证对象都会向汽车类发送验证结果。验证结果可以是成功或错误。当验证发送错误时,我希望停止汽车;当同一验证发送成功时,我想重新启动汽车。 换句话说: 所有验证都不断向汽车发送验证结果。如果所有验证都发送成功,则希望汽车继续前进,但如果其中一个发送错误,则希望停止汽车,直到从该验证接收到成功为止。 我正在尝试使用响应式扩展来解决这个问题。 有什么想法吗? 谢谢
1个回答

4

非常简单。如果你有一个叫做 xssIEnumerable<IObservable<bool>>(可以是可观测对象的数组或列表),那么你可以这样做:

IObservable<bool> combined =
    xss
        .CombineLatest()
        .Select(xs => xs.Aggregate((b0, b1) => b0 && b1));

现在只有当所有可观察对象的最新值为true时,才会使“combined”为true。
请注意,只有当所有源可观察对象都产生值时,才会产生值。如果您需要一个起始条件,则应使用“StartWith”扩展方法提供源可观察对象的默认值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接