【发布时间】:2020-02-06 14:29:24
【问题描述】:
假设我们有一个 Subject,它可以返回一组给定的值,所有这些都可能需要不同的方法来处理它们。我们可以辩论是否应该如此,但不是我调查的重点。
所以...为了处理这个问题,我们可能会让我们的代码看起来像这样:
var sub = new Subject();
sub.subscribe(
data => {
if (caseA) {
// do something
}
if (caseB) {
// do something else
}
});
这一切都很好,很棒……但我想知道是否有一些我们可以链接的操作员使它更 rx-ish?考虑过滤器,但链接 caseA 和 caseB 只会使它不起作用(显然),因为它最终会过滤掉两者。
所以,我的问题归结为:是否有可能有任何类似于下面的伪代码的东西?您认识的任何操作员都会像这样工作吗?
var sub = new Subject();
sub.pipe(
magicOperator(//handles caseA),
magicOperator(//handles caseB),
)
subscribe(
data => {
// handles common thread
});
【问题讨论】:
-
非常接近,但烦人的是您需要命名 2 个常量并单独订阅,但非常接近,可能最终会使用它
-
您不需要创建变量。
source.pipe(partition(val => val % 2 === 0)).forEach(part => part.subscribe() -
与传统的分区运算符相比并不热衷于此,但绝对值得牢记。
标签: javascript rxjs rxjs6 rxjs-pipeable-operators