要过滤到2个以上分支中的RxJS管道

问题描述 投票:0回答:1

假设我们有一个Subject,它可以返回给定的一组值,所有这些值可能需要使用不同的方法。我们可以辩论是否应该是这种情况,但这并不是我所要询问的重点。

所以...为了使我们的代码看起来像这样:

var sub = new Subject(); 

sub.subscribe( 
    data => {
        if (caseA) {
            // do something
        }
        if (caseB) {
            // do something else
        }
     });

这一切都是隆隆的,伟大的……但是我想知道是否有一些运营商可以连锁以使它更像RX?考虑过过滤器,但是链接caseA和caseB只会使它不起作用(显然),因为最终会同时过滤掉它们。

所以,我的问题可以归结为这一点:是否有可能使某些东西远比波纹管伪代码更酷?您知道可以使用此操作符的任何操作员吗?

var sub = new Subject(); 

sub.pipe(
    magicOperator(//handles caseA),
    magicOperator(//handles caseB),
)
subscribe( 
    data => {
        // handles common thread
     });
javascript rxjs rxjs6 rxjs-pipeable-operators
1个回答
0
投票

仅创建具有用于大小写切换的功能的对象可使代码更漂亮

const handler={
  case1:()=>..handle case1,
  case2:()=>...handle case2
}

sub.map(result=>handler[result])
© www.soinside.com 2019 - 2024. All rights reserved.