Error Handling Operators
Operators to Convert Observables
本文的主题为操作 Observable 的错误处理操作符以及转换 Observable 类型的操作符。
这里的 Observable 实质上是可观察的数据流。
Catch
- RxJava
/*
*/
- RxNET
/*
*/
Retry
- RxJava
/*
*/
- RxNET
/*
*/
To
- RxJava
/*
*/
- RxNET
var s = new Subject<int>();
s.ToArray().Subscribe(array =>
{
Console.WriteLine("start array dump");
foreach (var i in array)
{
Console.WriteLine(" array value : {0}", i);
}
});
Console.WriteLine("OnNext(1)");
s.OnNext(1);
Console.WriteLine("OnNext(2)");
s.OnNext(2);
Console.WriteLine("OnNext(3)");
s.OnNext(3);
Console.WriteLine("OnCompleted()");
s.OnCompleted();
/*
OnNext(1)
OnNext(2)
OnNext(3)
OnCompleted()
start array dump
array value : 1
array value : 2
array value : 3
*/
var s = new Subject<Tuple<string, int>>();
s.ToDictionary(t => t.Item1).Subscribe(dict =>
{
Console.WriteLine("one : {0}", dict["one"]);
Console.WriteLine("two : {0}", dict["two"]);
Console.WriteLine("three : {0}", dict["three"]);
});
Console.WriteLine("OnNext(one)");
s.OnNext(Tuple.Create("one", 1));
Console.WriteLine("OnNext(two)");
s.OnNext(Tuple.Create("two", 2));
Console.WriteLine("OnNext(three)");
s.OnNext(Tuple.Create("three", 3));
Console.WriteLine("OnCompleted()");
s.OnCompleted();
/*
OnNext(one)
OnNext(two)
OnNext(three)
OnCompleted()
one : (one, 1)
two : (two, 2)
three : (three, 3)
*/
var s = new Subject<int>();
s.ToList().Subscribe(list =>
{
foreach (var i in list)
{
Console.WriteLine("value : {0}", i);
}
});
Console.WriteLine("OnNext(1)");
s.OnNext(1);
Console.WriteLine("OnNext(2)");
s.OnNext(2);
Console.WriteLine("OnNext(3)");
s.OnNext(3);
Console.WriteLine("OnCompleted()");
s.OnCompleted();
/*
OnNext(1)
OnNext(2)
OnNext(3)
OnCompleted()
value : 1
value : 2
value : 3
*/
var s = new Subject<Tuple<string, string>>();
s.ToLookup(t => t.Item1).Subscribe(l =>
{
foreach (var g in l)
{
Console.WriteLine("Key : {0}", g.Key);
foreach (var i in g)
{
Console.WriteLine(" item : {0}", i);
}
}
});
Console.WriteLine("OnNext(group A)");
s.OnNext(Tuple.Create("group A", "taro"));
s.OnNext(Tuple.Create("group A", "jiro"));
Console.WriteLine("OnNext(group B)");
s.OnNext(Tuple.Create("group B", "foo"));
s.OnNext(Tuple.Create("group B", "hoge"));
s.OnNext(Tuple.Create("group B", "bar"));
Console.WriteLine("OnCompleted()");
s.OnCompleted();
/*
OnNext(group A)
OnNext(group B)
OnCompleted()
Key : group A
item : (group A, taro)
item : (group A, jiro)
Key : group B
item : (group B, foo)
item : (group B, hoge)
item : (group B, bar)
*/
/*
*/
/*
*/