创建行为类似于 CombineLatest 但仅发出刚刚触发的源的值的可观察对象



我想创建一个可观察量,它接受N个可观察源,并通过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
}
)

相关内容

  • 没有找到相关文章

最新更新