处理相关事件的最佳方法是什么?
有一个对象,我需要测试连接是成功还是失败。 但是,对象首先需要通过初始化步骤,我测试成功或失败,然后继续连接步骤。如何观察无功扩展(Rx)中的相关事件?
- 如果初始化失败,则返回连接失败。
- 如果初始化成功,则返回是连接步骤的结果。
我的代码如下。有没有更好的方法来处理这些依赖事件,因为我正在初始化订阅内部订阅连接?
如果我有更多这样的依赖事件,我会继续嵌套订阅吗?
public static void Test()
{
const int maxValue = 501;
var random = new Random(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0));
var initOk = Observable.Interval(TimeSpan.FromMilliseconds(random.Next(maxValue))).Select(i => true);
var initKo = Observable.Interval(TimeSpan.FromMilliseconds(random.Next(maxValue))).Select(i => false);
var connectOk = Observable.Interval(TimeSpan.FromMilliseconds(random.Next(maxValue))).Select(i => true);
var connectKo = Observable.Interval(TimeSpan.FromMilliseconds(random.Next(maxValue))).Select(i => false);
var initResult = initOk.Amb(initKo).Take(1);
var connectResult = connectOk.Amb(connectKo).Take(1);
var id =
initResult.Subscribe(ir =>
{
if (ir)
{
var cd =
connectResult.Subscribe(cr =>
{
Console.WriteLine(cr
? "Connection succeeded."
: "Connection failed.");
});
}
else
{
Console.WriteLine("Initialization failed thus connection failed.");
}
});
}
谢谢。我明白了。 – 2011-04-08 10:25:41