这就是我的问题的要点。假设您有一个处理 2-3-4-10 个操作的服务。为了在多个组件中进行交流,您有 2-3-4-10 个主题。
那么,是最好有 1 个主题,然后传入一个对象来标识它所涉及的操作,并在您的订阅中进行过滤……还是有很多主题并单独订阅?
多少科目太多?他们或多或少在整个过程中同时保持活跃。
从某种意义上来说,我有点好奇,而不是我自己的用例以及它是否可以做得更好。
假设我们有一个主题,它可以返回一组给定的值,所有这些值可能需要不同的方法来处理。我们可以争论是否应该如此,但这并不是我调查的重点。
所以......为了处理这个问题,我们的代码可能看起来像这样:
var sub = new Subject();
sub.subscribe(
data => {
if (caseA) {
// do something
}
if (caseB) {
// do something else
}
});
Run Code Online (Sandbox Code Playgroud)
这一切都很棒,一切都很棒……但我想知道是否有一些操作符可以链接起来以使其更加rx-ish?想到了过滤器,但是链接 caseA 和 caseB 只会使其不起作用(显然),因为它最终会过滤掉两者。
所以,我的问题归结为:是否有可能有任何类似于下面的伪代码的东西?您知道有任何操作员可以像这样工作吗?
var sub = new Subject();
sub.pipe(
magicOperator(//handles caseA),
magicOperator(//handles caseB),
)
subscribe(
data => {
// handles common thread
});
Run Code Online (Sandbox Code Playgroud)