创建行为类似于 CombineLatest 但仅发出刚刚触发的源的值的 Observable

Create Observable that behaves like CombineLatest but only emit the value of the source that just fired

我想创建一个 Observable,它采用 N 个 Observable 源并使用 N 元函数转换它们。每当源可观察对象之一发出一个项目时,此可观察对象的 onNext() 将调用此函数,如下所示: f(null,null,null,o3.val,null,null) 其中 o3 是刚刚发出的源一个值。

类似于 combineLatest,其中 f 是用所有来源的最后发射值组合在一起调用的,但在 f 中,我们得到所有其他来源的空值。

f 的主体可以用作开关:

 function f(v1,v2,...vn) {
        if (v1) { ... }
        else if(v2) { ... }
    }

这可能吗?还有其他方法可以完成此行为吗?

你可能想考虑这样的事情

const obsS1 = obsSource1.pipe(map(data => [data, 'o1']));
const obsS2 = obsSource2.pipe(map(data => [data, 'o2']));
....
const obsSN = obsSourceN.pipe(map(data => [data, 'oN']));

merge(obs1, obs2, ..., obsN)
.subscribe(
  dataObs => {
    // do what you need to do
    // dataObs[0] contains the value emitted by the source Observable
    // dataObs[1] contains the identifier of the source Observable which emitted last
  }
)