我有一个角度服务,我想暴露一个observable,它充当逻辑“或”的类。假设我有多个源序列可以给出on
和off
的值。我需要输出true
任何时候任何东西都是on
,并且当所有值为off
时返回false
。rxjs中是否有逻辑或类型的运算符?
例子:
const replaceInput = input => input === 'on' ? 'off' : 'on';
const getSource = (name) => Observable.interval(1000)
.scan(
input => Math.random() > 0.5 ? replaceInput(input) : input,
'off' // initial value
)
.do(val => console.log(`${name}: ${val});
const first$ = getSource('first');
const second$ = getSource('second');
const result$ = ???;
现在,我已经试过result$ = Observable.merge(first$, second$)
,但给人总是on
。我也尝试过使用result$ = combineLatest(first$, second$)
,所以这有点不错,但是我的输入不同步,所以并不总是完美的。我的意思是,第一美元可能放出一个以上的价值,而第二美元可能永远不会开火,反之亦然。我还可以做些什么?
我想过一些mergeMap或类似的,然后保持外部上下文的状态,这种方式我运行任何事件的更新。但是当我遇到问题时,“关闭”事件可能意味着“关闭”,但是只有其他序列也是“关闭”的时候,所以它很快就会变得棘手。
您可以使用筛选器操作,放出只有当值匹配根据您的要求, –
那么,什么将是什么样子? – Zlatko
在你的代码中看起来对我来说,一旦输入'打开',没有逻辑将其设置为关闭 –