Observable.SelectMany以独家而非共享的方式

时间:2014-08-21 18:03:27

标签: c# system.reactive observable

我喜欢与xs.SelectMany(_ => ys)非常相似的可观察运算符,只是在每个新输入值的不同之处,应该取消订阅延续/选择器函数的先前结果,制作独占消息总线而不是共享。

大理石:

xs      S----o-----o----o------>
             |     |    |
ys1          S-o-o-+o-o-+o----->
               | | |    |
ys2            | | S-oo-+--o--->
               | |   || |   
ys3            | |   || S---o-->
               | |   ||     |
result        So-o---oo-----o-->

请注意,一旦xs的第二个值产生ys2,ys1就不会产生任何结果。结果应该取消订阅ys1。我希望这能说明我想要的东西:某种多路复用行为。这对于更改源(例如,GUI中的聚焦控件)触发事件非常有用。

有类似的东西吗?我可以为这种行为撰写已知的运算符吗?

1 个答案:

答案 0 :(得分:2)

您想要切换http://msdn.microsoft.com/en-us/library/hh229197%28v=vs.103%29.aspx,如果您在Switch http://www.introtorx.com/content/v1.0.10621.0/12_CombiningSequences.html上阅读此部分,您会看到它具有相同的大理石。