假设我们有一个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
});
仅创建具有用于大小写切换的功能的对象可使代码更漂亮
const handler={
case1:()=>..handle case1,
case2:()=>...handle case2
}
sub.map(result=>handler[result])