【发布时间】:2020-12-16 18:29:25
【问题描述】:
我有 2 个observables,
const obsA = this.api.ObsA();
const obsB = this.api.ObsB();
并且我想将join 他们转换成single observable,这将使EMIT 值仅遵循某些规则:
- -如果发射,它必须
emit both values,最好是array,第一个值:arr[0],第二个值:arr[1]。 - -如果
obsA发出NULL,那么我必须运行:subjectObsB.next(null),同时将obsB的值设置为NULL,并同时发出null值。 - -如果 2 个
observable中的任何一个发出new value,则立即将其与另一个Observable's最新发出的值一起发出。 (当然 首先应用上述规则)
我最好的选择是什么?
我尝试遵循这条路线:
const mergedObs = merge(
this.obsA().pipe(
tap((s) => {
if (s == null) this.api.resetObsB(null);
})
),
this.obsB()
);
但它不起作用,我想我在这里遗漏了一些逻辑
【问题讨论】:
标签: angular observable