当next可用时停止Observable



我有以下东西:

IObservable<A> as_;
Func<A, IObservable<B>> getbs;

getbs是一个函数,它返回B s的无限可观测值。

我想得到一个IObservable<B>,只要下一个A在"可用",就"切换"到下一个IObservable<B>

as_.SelectMany(getbs)这样的东西将不起作用,因为它将不断从第一个A获得B s,因为序列永远不会自然终止。

SelectMany就像Select后面跟着Merge。你需要在你的函数中使用Select,然后使用Switch

IObservable<int> a = Observable.Generate(0, _ => true, i => i + 1, i => i, _ => TimeSpan.FromSeconds(1));
Func<int, IObservable<string>> selector = i => Observable.Generate(1, _ => true, j => j + 1, j => $"{i} x {j}", _ => TimeSpan.FromMilliseconds(50));
a.Select(selector).Switch().Subscribe(s => Console.WriteLine(s));

相关内容

  • 没有找到相关文章

最新更新