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



我有一个关于反应式扩展的设计问题,这是场景:我有一个汽车对象,该汽车对象有多个验证对象。每个验证对象不断向汽车类发送验证结果。验证结果可以是"成功"或"错误"。当验证发送错误时,我想停止汽车,当相同的验证发送成功时,我想再次启动汽车。换句话说:

所有验证不断向汽车发送验证结果。如果所有验证都发送成功,我希望汽车继续行驶,但如果其中一个发送错误,我想停止汽车,直到我从该验证中获得成功。

我正在尝试通过反应式扩展找到解决此问题的方法。

有什么想法吗?

谢谢

很简单。如果您有一个名为 xssIEnumerable<IObservable<bool>>(可能是数组或可观察量列表),则可以执行以下操作:

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

现在,只有当所有可观察量的最新值true时,combined才会true

请注意,仅当所有源可观察量都生成了一个值时,这才会生成一个值。如果需要起始条件,源可观察量应具有使用 StartWith 扩展方法提供的默认值。

相关内容

  • 没有找到相关文章