RxJS:如何切换以在多个行为主题源之间切换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RxJS:如何切换以在多个行为主题源之间切换相关的知识,希望对你有一定的参考价值。
场景:
我有一个网格,我想在其中显示数据。我可能有两个(或更多)行为主题数据源。我还有一个toggle observable,它返回一个数字,表示我想要显示哪个数据源(即1表示源1,2表示源2等)。
题:
如何组合n个源但仅从源可以发出记录,如切换可观察到的那样?我的网格将订阅生成的observable。当切换观察器发出时,我希望发出所选源的最新信息。
// Sources
let source1 = new BehaviorSubject([]);
let source2 = new BehaviorSubject([]);
// Toggle observable
let toggle = new BehaviorSubject(1); // default to source one
// Combined observable
let gridDataSource = ????
答案
我认为switchMap
可以在这里做到这一点。根据定义,它的目的是在多个源之间切换。
// Sources
let sources = [
new BehaviorSubject([]),
new BehaviorSubject([]),
];
// Toggle observable
let toggle = new BehaviorSubject(0); // default to the first source
// Selected observable
let gridDataSource = toggle.switchMap((i) => source[i]);
如果您不能或不想使用数组源,则可以回退到switchMap声明中的简单switch-case。
let gridDataSource = toggle.switchMap((i) => {
switch(i) {
case 1: return source1;
case 2: return source2;
}
});
以上是关于RxJS:如何切换以在多个行为主题源之间切换的主要内容,如果未能解决你的问题,请参考以下文章
更改 Ctrl + Tab 行为以在 Visual Studio 中的文档之间移动